在python中将垂直表格转换为水平表格(展平表格)

2024-04-18 23:49:55 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here

 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)

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

感谢您的帮助


Tags: csvimportnumpyidpandasdfreaddata
2条回答

你可以使用熊猫的pivot_table

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

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

您可以使用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                   

相关问题 更多 >