我在 pandas 数据框列中有一个字典,输入是,
import pandas as pd
df = pd.DataFrame([{'A': {'k1': 10}}, {'A': {'k2': 20, 'k3': 30}}, {'A': {'k4': 15}}])
df
A
0 {u'k1': 10}
1 {u'k3': 30, u'k2': 20}
2 {u'k4': 15}
我想将“A”列中的 dict
的键和值拆分为新列并拆分为行(取决于字典中键的数量),基本上输出应该如下所示,
keys values
0 k1 10
1 k3 30
2 k2 20
3 k4 15
最佳答案
使用列表理解与元组展平,然后使用DataFrame
构造函数:
L = [(k1, v1) for k, v in df['A'].to_dict().items() for k1, v1 in v.items()]
df = pd.DataFrame(L, columns = ['keys','values'])
print (df)
keys values
0 k1 10
1 k2 20
2 k3 30
3 k4 15
或者创建DataFrame
和stack
:
df = (pd.DataFrame(df['A'].values.tolist())
.stack().reset_index(level=0, drop=True)
.reset_index())
df.columns = ['keys','values']
print (df)
keys values
0 k1 10.0
1 k2 20.0
2 k3 30.0
3 k4 15.0
关于python - Pandas 列字典拆分为新列和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50522146/