【问题标题】:Pandas Dataframe Transpose to varying number of columns熊猫数据框转置到不同数量的列
【发布时间】:2017-03-04 02:42:27
【问题描述】:
我希望转置如下内容:
ID name
1 1 name
2 1 name1
3 2 name2
4 2 name3
5 2 name4
变成这样的:
ID col1 col2 col3
1 1 name name1 Null
2 2 name2 name3 name4
【问题讨论】:
标签:
python
python-3.x
pandas
dataframe
【解决方案1】:
您可以尝试以下方法,先创建一个列变量,然后使用pivot:
df['col'] = 'col' + (df.groupby('ID').cumcount() + 1).astype(str)
df.pivot('ID', 'col', 'name')
#col col1 col2 col3
#ID
#1 name name1 None
#2 name2 name3 name4
【解决方案2】:
您可以使用数据透视表:
import pandas as pd
df = pd.DataFrame({'ID': [1,1,2,2,2], 'name': 'name','name1','name2','name3','name4']})
df['No.'] = df.groupby('ID').cumcount()
df.pivot(index='ID', columns='No.', values='name')
返回:
No. 0 1 2
ID
1 name name1 None
2 name2 name3 name4
或.unstack():
df.set_index(['ID','No.'])['name'].unstack('No.')
返回:
No. 0 1 2
ID
1 name name1 None
2 name2 name3 name4