python - pandas 取消列表的堆叠

标签 python pandas

我遇到一个问题:

import pandas
data=pandas.DataFrame({'data1':[[('m',2)],[('n',3),('y',4)],[('x',3),('y',5)],[('m',3)]]},
       index=[['a','a','c','d'],[1,1,3,4]])

数据如下:

        data1
a   1   [(m, 2)]
    1   [(n, 3), (y, 4)]
c   3   [(x, 3), (y, 5)]
d   4   [(m, 3)]

我想要这样的结果:

       key  value
a   1   m   2
    1   n   3
    1   y   4
c   3   x   3
    3   y   5
d   4   m   3

谢谢!

最佳答案

您可以使用列表理解通过元组创建df,然后通过 stack 进行 reshape :

df = pd.DataFrame([dict(x) for x in data.data1], index=data.index)
print (df)
       m    n    x    y
a 1  2.0  NaN  NaN  NaN
  1  NaN  3.0  NaN  4.0
c 3  NaN  NaN  3.0  5.0
d 4  3.0  NaN  NaN  NaN

df = df.stack().astype(int).reset_index(level=2)
df.columns = ['key','value']
print (df)
    key  value
a 1   m      2
  1   n      3
  1   y      4
c 3   x      3
  3   y      5
d 4   m      3

关于python - pandas 取消列表的堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42713161/

相关文章:

python - 下面的程序是如何运行的?

python - 在 Pandas 中绘制多个条形图时如何更改条形之间的空间?

python - 如何在特定键上合并这两个数据帧?

python - 如何将数据集拆分为训练集和验证集以保持类之间的比率?

python - pandas 填充数据框中给定的缺失时间间隔

python - 迭代数据框

python - 使用mod_wsgi在网页上实时输出脚本

python - 使用 GCP Composer 运行 Hive 查询

python - setup.cfg Python 项目的单一来源包版本

python - 用python将png转换为dds?