способ распаковать данные в рамках датафрейма - PullRequest
4 голосов
/ 21 октября 2019

У меня есть df, который "упакован", и я пытаюсь найти способ распаковать в несколько столбцов и строк:

ввод в виде df с несколькими списками в столбце

all_labels                 values                       labels                   
[A,B,C]          [[10,1,3],[5,6,3],[0,0,0]]            [X,Y,Z]

желаемый вывод: распакованный df

        X          Y             Z
A       10         1             3   
B       5          6             3  
C       0          0             0

Я пробовал это для столбца all_labels & label, но не уверен, как это сделать для столбца значений:

df.labels.apply(pd.Series) df.all_labels.apply(pd.Series)

1 Ответ

2 голосов
/ 21 октября 2019

Настройка

packed = pd.DataFrame({
    'all_labels': [['A', 'B', 'C']],
    'values': [[[10, 1, 3], [5, 6, 3], [0, 0, 0]]],
    'labels': [['X', 'Y', 'Z']]
})

Не усложняйте

pd.DataFrame(packed['values'][0], packed['all_labels'][0], packed['labels'][0])

    X  Y  Z
A  10  1  3
B   5  6  3
C   0  0  0

rename и dict распаковка

Столбцы так близкок именам аргументов конструктора dataframe, я не смог устоять ...

rnm = {'all_labels': 'index', 'values': 'data', 'labels': 'columns'}
pd.DataFrame(**packed.rename(columns=rnm).loc[0])

    X  Y  Z
A  10  1  3
B   5  6  3
C   0  0  0

Без rename и list вместо распаковки

Убедившись в том, что списокимена столбцов в том же порядке, аргументы ожидаются в конструкторе pandas.DataFrame

pd.DataFrame(*packed.loc[0, ['values', 'all_labels', 'labels']])

    X  Y  Z
A  10  1  3
B   5  6  3
C   0  0  0


дополнительный материал

метод pandas.DataFrame.to_dict вернет словарь, который выглядит

df = pd.DataFrame(*packed.loc[0, ['values', 'all_labels', 'labels']])

df.to_dict('split')

{'index': ['A', 'B', 'C'],
 'columns': ['X', 'Y', 'Z'],
 'data': [[10, 1, 3], [5, 6, 3], [0, 0, 0]]}

То, что мы могли бы обернуть в другой вызов конструктора dataframe, чтобы получить что-то очень похожее на то, с чего мы начали.

pd.DataFrame([df.to_dict('split')])

       index    columns                                data
0  [A, B, C]  [X, Y, Z]  [[10, 1, 3], [5, 6, 3], [0, 0, 0]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...