python - Pandas 列字典拆分为新列和行

标签 python pandas

我在 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

或者创建DataFramestack :

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/

相关文章:

python - 根据过滤/排序数据的需要何时使用数据库?

python - 计算给定(x,y)坐标的多边形面积

python - Pandas Dataframe 性能与列表性能

python - Pandas 汇总统计的经济状况调查有何不同?

python - Pandas :从MultiIndex中的日期选择

python - Telepot 中的 sendPhoto() 对我的机器人不起作用

python - C代码嵌入python回调函数

python - 我可以在同一台计算机上使用同名的多个虚拟环境吗

python - 在 Pandas 中使用 Where 条件分组

python - 如何在 python 中返回 lambda 中拆分的第一项?