gpt4 book ai didi

python - 从字典列表中添加新列

转载 作者:行者123 更新时间:2023-12-04 15:21:13 25 4
gpt4 key购买 nike

我有一个DataFrame,其中有一列由dict组成,我想提取所有的键和值并将它们作为两个新列。

   a                 b
0 1 {'a': 1, 'b': 2}
1 2 {'k': 4, 'v': 6}
2 3 {'z': 3}

输出将是

   a  k  v
0 1 a 1
1 1 b 2
2 2 k 4
3 2 v 6
4 3 z 3

最佳答案

对元组列表使用具有展平值的列表理解并传递给 DataFrame 构造函数:

L = [(x, k, v) for x, y in df[['a','b']].values for k, v in y.items()]
df = pd.DataFrame(L, columns=['a','k','v'])
print (df)
a k v
0 1 a 1
1 1 b 2
2 2 k 4
3 2 v 6
4 3 z 3

编辑:对于使用唯一索引的一般解决方案,可以使用 DataFrame.pop 修改解决方案用于提取 b 列,按索引值添加新列 idx,转换为索引并最后使用 DataFrame.join :

L = [(x, k, v) for x, y in df.pop('b').items() for k, v in y.items()]
df1 = pd.DataFrame(L, columns=['idx','k','v']).set_index('idx').rename_axis(None)
df = df.join(df1).reset_index(drop=True)
print (df)
a k v
0 1 a 1
1 1 b 2
2 2 k 4
3 2 v 6
4 3 z 3

关于python - 从字典列表中添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63277786/

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