У меня есть следующие панды DataFrame:
import numpy as np
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3, 4, 47, 27], 'B': [5, 6, 7, 8, 21, 40],
'C': [9, 10, 11, 12, 45, 33], 'D': [3, 4, 1, 2, 27, 47], 'E': [7, 8, 5, 6, 40, 21],
'F': [[[11, 35], [36, 37]], [[12, 42], [14, 11]], [[9, 37], [10, 43], [12, 28]], [[105, 27]], [], [[45, 2]]]})
print(df1)
## A B C D E F
## 0 1 5 9 3 7 [[11, 35], [36, 37]]
## 1 2 6 10 4 8 [[12, 42], [14, 11]]
## 2 3 7 11 1 5 [[9, 37], [10, 43], [12, 28]]
## 3 4 8 12 2 6 [[105, 27]]
## 4 47 21 45 27 40 []
## 5 27 40 33 47 21 [[45, 2]]
##
Столбец F представляет собой список списков. Я хотел бы преобразовать это в список кортежей.
Как правило, способ преобразования списка списков в список кортежей заключается в простом понимании списка, например
foo = [[9, 37], [10, 43], [12, 28]]
foo = [tuple(lst) for lst in foo]
print(foo)
## [(9, 37), (10, 43), (12, 28)]
Однако я не знаю, как эффективно сделать эту строкуПостепенно в пандах. Моей первой мыслью было создать новый столбец следующим образом:
df1['new_col'] = [tuple(lst) for lst in df1.F]
Однако это, очевидно, дает неверный результат - теперь F - это кортеж списков, а не список кортежей:
df1
A B C D E F new_col
0 1 5 9 3 7 [[11, 35], [36, 37]] ([11, 35], [36, 37])
1 2 6 10 4 8 [[12, 42], [14, 11]] ([12, 42], [14, 11])
2 3 7 11 1 5 [[9, 37], [10, 43], [12, 28]] ([9, 37], [10, 43], [12, 28])
3 4 8 12 2 6 [[105, 27]] ([105, 27],)
4 47 21 45 27 40 [] ()
5 27 40 33 47 21 [[45, 2]] ([45, 2],)
Извините, если это очевидно --- мои панды ржавые.