gpt4 book ai didi

python - Pandas : How to map the list of dictionary in a column as a new row

转载 作者:行者123 更新时间:2023-12-01 06:50:25 25 4
gpt4 key购买 nike

以下格式的数据帧必须像“op_df”一样进行转换,

ip_df=pd.DataFrame({'class':['I','II','III'],'details':[[{'sec':'A','assigned_to':'tom'},{'sec':'B','assigned_to':'sam'}],[{'sec':'B','assigned_to':'joe'}],[]]})
ip_df:
class details
0 I [{'sec':'A','assigned_to':'tom'},{'sec':'B','assigned_to':'sam'}]
1 II [{'sec':'B','assigned_to':'joe'}]
2 III []

所需的输出数据帧应该是,

 op_df:
class sec assigned_to
0 I A tom
1 I B sam
2 II B joe
3 III NaN NaN

如何将“详细信息”列的每个字典更改为新行,以字典的键作为列名称,以字典的值作为其各自的列值?

我已经尝试过,

ip_df.join(ip_df['details'].apply(pd.Series))

然而,我无法像“op_df”那样构建框架。

最佳答案

我确信有更好的方法可以做到这一点,但我必须解构您的详细信息列表并创建数据框,如下所示:

dict_values = {'class':['I','II','III'],'details':[[{'sec':'A','assigned_to':'tom'},{'sec':'B','assigned_to':'sam'}],[{'sec':'B','assigned_to':'joe'}],[]]}

all_values = []

for cl, detail in zip(dict_values['class'], dict_values['details']):

if len(detail) > 0:
for innerdict in detail:
row = {'class': cl}
for innerkey in innerdict.keys():
row[innerkey] = innerdict[innerkey]
all_values.append(row)
else:
row = {'class': cl}
all_values.append(row)

op_df = pd.DataFrame(all_values)

关于python - Pandas : How to map the list of dictionary in a column as a new row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59032778/

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