【问题标题】:Convert vertical table to horizontal in python(Flattening the table)在python中将垂直表格转换为水平表格(展平表格)
【发布时间】:2020-09-03 20:10:04
【问题描述】:

 import numpy as np
 import pandas as pd

df = pd.read_csv(“data.csv”)

pd.pivot_table(df, index = ‘Employee ID’ , values = [ ‘ Member ID’, ‘Firstname’, ‘Lastname’] , aggfunc =‘first)

格式似乎有效,但仅适用于一个值,我如何显示所有内容?

感谢任何帮助。

【问题讨论】:

  • 更多信息会有所帮助。你说的是csv文件吗?您是否已经有代码可以将其读取到 python 字典并将其写回工作表?
  • 是的,它是一个 csv 文件,我在将数据展平为上述格式时遇到问题。不,我没有那个代码

标签: python python-3.x pandas csv pivot


【解决方案1】:

您可以使用set_index()unstack(),但您需要修复列,例如:

In []:
df = pd.read_csv(“data.csv”)

df['ID'] = df['MemberID']   # Copy because you want it in the values too
df = df.set_index(['EmployeeID', 'MemberID']).unstack(level=1, fill_value='').sort_index(level=1, axis=1)
df.columns = df.columns.to_series().apply(lambda x: 'Member{}{}'.format(x[1], x[0]))
print(df)

Out[]:
          Member1ID Member1Lastname Member1firstname Member2ID Member2Lastname Member2firstname Member3ID Member3Lastname Member3firstname 
EmployeeID                                                                                                   
1                  1             Ann              Anu         2             Ann              Aju        3             vAnn              Abi 
2                  1            John             Cini         2            John             Biju             
3                  1           Peter           Mathew         2           Peter           Joseph           

但我觉得如果你真的不需要 MemberID 在值中(你在列名中有它)或者你不介意MultiIndex 那么你可以简化:

In []:
df.set_index(['EmployeeID', 'MemberID']).unstack(level=1, fill_value='').swaplevel(axis=1).sort_index(axis=1)

Out[]:
MemberID          1                  2                  3          
           Lastname firstname Lastname firstname Lastname firstname
EmployeeID                                                         
1               Ann       Anu      Ann       Aju      Ann       Abi
2              John      Cini     John      Biju                   
3             Peter    Mathew    Peter    Joseph                   

【讨论】:

    【解决方案2】:

    你可以使用pivot_table的熊猫

    df = df.pivot_table(index=['Employe-id'], 
                        columns=['MemberID','firstname','lastname'])
    

    要安装 pandas,请使用 pip install pandas 然后首先通过read_csv()创建一个数据框对象 然后使用上述方法进行转换

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      • 2017-12-18
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-07
      相关资源
      最近更新 更多