Pandas Dataframe转置为不同数量的列

时间:2017-03-04 02:42:28

标签: python python-3.x pandas dataframe

我希望转置类似的内容:

NSItemProvider

类似于:

    ID    name
1     1    name
2     1    name1
3     2    name2
4     2    name3
5     2    name4

2 个答案:

答案 0 :(得分:2)

您可以尝试以下操作,首先创建一个列变量,然后使用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

答案 1 :(得分:1)

您可以使用数据透视表:

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