2017-01-05 4 views
0
>>>lis = df['col'].values.tolist()  

>>>lis = [[(('A', 'WE'), ('1,21', 'rr'), ('io', 'mp'))], 
    [(('B', 'WE'), ('5', 'rr'), ('io', 'mp'))], 
    [(('A', 'WE'), ('3', 'rr'), ('io', 'mp')), 
     (('C', 'WE'), ('0', 'rr'), ('io', 'mp'))], 
    .... 
    [(('D', 'WE'), ('6', 'rr'), ('io', 'mp'))], 
    [(('A', 'WE'), ('9.0', 'rr'), ('io', 'mp'))]] 

Как принимать только Firsts элементы каждого кортежа и переформатировать его в:Как распаковать прежние значения следующего вложенного списка кортежей?

[[A, 1,21, io], 
[B, 5, io], 
[A, 3, io], 
[C, 0, io], 
.... 
[D, 6, io], 
[A, 9.0', io]] 

Я все готов пытался:

[' '.join(map(str,lis[0][0])) for x in lis] 

и

[' '.join(map(str,lis[0][:1])) for x in lis] 

и

' '.join(map(str, lis)) 

и

new_lis, _ = zip(*lis[0][0])  
return ' '.join(new_lis) 

UPDATE

колонка панды выглядит следующим образом:

Col 
0 [(('A', 'WE'), ('1,21', 'rr'), ('io', 'mp'))] 
1 [(('B', 'WE'), ('5', 'rr'), ('io', 'mp'))] 
2 [(('A', 'WE'), ('3', 'rr'), ('io', 'mp')) 
3 [(('C', 'WE'), ('0', 'rr'), ('io', 'mp'))] 
    .... 
n [(('D', 'WE'), ('6', 'rr'), ('io', 'mp'))] 
n-1 [(('A', 'WE'), ('9.0', 'rr'), ('io', 'mp'))] 
+0

что вы хотите, чтобы выглядеть, когда вы сделали? –

+0

В качестве примера просто введите первые значения, разделенные запятыми @EmettSpeer – tumbleweed

+1

Можете ли вы разместить то, что 'df ['col']' выглядит? Должен быть более простой способ извлечь это с помощью панд. – root

ответ

1

Вы можете попробовать это одно:

new_list = [[nested[0] for nested in sub_l] for l in lis for sub_l in l] 
print(new_list) 
[['A', '1,21', 'io'], 
['B', '5', 'io'], 
['A', '3', 'io'], 
['C', '0', 'io'], 
['D', '6', 'io'], 
['A', '9.0', 'io']] 

Это не очень читаемо, но оно делает то, что вы хотите.

UPDATE Если вы хотите иметь список строк, которые вы можете использовать этот код:

[",".join(nested[0] for nested in sub_l) for l in lis for sub_l in l] 
+0

Это действительно сработало. Тем не менее, я не могу сделать '. '.join (new_list)', чтобы удалить квадратную скобку ... Как я могу удалить их ?. – tumbleweed

+0

@tumbleweed Я добавил к ответу –

3
lis = [[(('A', 'WE'), ('1,21', 'rr'), ('io', 'mp'))], 
    [(('B', 'WE'), ('5', 'rr'), ('io', 'mp'))], 
    [(('A', 'WE'), ('3', 'rr'), ('io', 'mp')), 
     (('C', 'WE'), ('0', 'rr'), ('io', 'mp'))], 
    [(('D', 'WE'), ('6', 'rr'), ('io', 'mp'))], 
    [(('A', 'WE'), ('9.0', 'rr'), ('io', 'mp'))]] 

print [list(next(zip(*tup))) for subl in lis for tup in subl ] 

Выход:

[['A', '1,21', 'io'], 
['B', '5', 'io'], 
['A', '3', 'io'], 
['C', '0', 'io'], 
['D', '6', 'io'], 
['A', '9.0', 'io']] 
+0

Спасибо за помощь! ... Однако я получаю первую букву и вторую букву каждого кортежа: для '('A', 'WE'), ('1,21' , 'rr'), ('io', 'mp') 'Я получил:' ('A', W ') ' – tumbleweed

+1

@tumbleweed \t Теперь попробуйте. – MYGz

+0

Спасибо! ... Но у меня такая же проблема! – tumbleweed

 Смежные вопросы

  • Нет связанных вопросов^_^