Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将垂直表格转换为水平表格(展平表格)_Python_Python 3.x_Pandas_Csv_Pivot - Fatal编程技术网

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

在python中将垂直表格转换为水平表格(展平表格),python,python-3.x,pandas,csv,pivot,Python,Python 3.x,Pandas,Csv,Pivot,该格式似乎有效,但仅适用于一个值,如何显示所有内容 非常感谢您的帮助。您可以使用熊猫的pivot\u表 df=df.pivot_表(索引=['Employe-id'], 列=['MemberID'、'firstname'、'lastname']) 要安装熊猫,请使用pip安装熊猫 然后首先通过read\u csv() 然后使用上述方法转换您可以使用设置索引()和取消堆栈(),但需要修复列,例如: In []: df = pd.read_csv(“data.csv”) df['ID'] = d

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


非常感谢您的帮助。

您可以使用熊猫的
pivot\u表

df=df.pivot_表(索引=['Employe-id'],
列=['MemberID'、'firstname'、'lastname'])
要安装熊猫,请使用
pip安装熊猫
然后首先通过
read\u csv()

然后使用上述方法转换

您可以使用
设置索引()
取消堆栈()
,但需要修复列,例如:

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(列名称中有MemberID),或者不介意使用
多索引,则可以简化,然后:

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                   

更多的信息会有所帮助。你说的是csv文件吗?您是否已经有了将其读入python字典并将其写回工作表的代码?是的,这是一个csv文件,我在将数据展平到上述格式时遇到了问题。不,我没有那个密码
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