gpt4 book ai didi

python - 在数据框中解压缩数据的方法

转载 作者:太空宇宙 更新时间:2023-11-03 11:11:55 25 4
gpt4 key购买 nike

我有一个“打包”的 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 & labels 列进行了尝试,但不确定如何对 values 列进行此操作:

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

最佳答案

设置

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

重命名dict解包

列与数据框构造函数的参数名称非常接近,我无法抗拒......

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

不用renamelist 解包

确保列名的顺序与 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


奖励 Material

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]]}

我们可以包装在另一个数据帧构造函数调用中,以返回与我们开始时非常相似的东西。

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]]

关于python - 在数据框中解压缩数据的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58492895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com