1 回答

TA貢獻2065條經驗 獲得超14個贊
從@Wen 解決方案開發。而不是pivot,使用pivot_table
df['New']=df.groupby('Age').cumcount()
s= df.pivot_table(index='Age',columns='New',
values=['Name', 'Location'],
aggfunc='first').reindex(['Name', 'Location'], axis=1, level=0)
s.columns = s.columns.map('{0[0]}{0[1]}'.format)
l=[y.dropna(1).reset_index() for _ , y in s.groupby(s.isnull().sum(1))]
In [499]: l[0]
Out[499]:
Age Name0 Name1 Name2 Name3 Location0 Location1 Location2 Location3
0 7 nic6k ju7li nic8k ju9li ma ny ma ny
In [500]: l[1]
Out[500]:
Age Name0 Name1 Name2 Location0 Location1 Location2
0 4 j3uli nic4k jul5i ny ma ny
In [501]: l[2]
Out[501]:
Age Name0 Name1 Location0 Location1
0 2 tom ni2ck ca ma
1 8 nic1k car ma ny
如果您想保留多索引列,請跳過列map上的命令
df['New']=df.groupby('Age').cumcount()
s= df.pivot_table(index='Age',columns='New',
values=['Name', 'Location'],
aggfunc='first').reindex(['Name', 'Location'], axis=1, level=0)
l=[y.dropna(1).reset_index() for _ , y in s.groupby(s.isnull().sum(1))]
In [544]: l[0]
Out[544]:
Age Name Location
New 0 1 2 3 0 1 2 3
0 7 nic6k ju7li nic8k ju9li ma ny ma ny
In [545]: l[1]
Out[545]:
Age Name Location
New 0 1 2 0 1 2
0 4 j3uli nic4k jul5i ny ma ny
In [546]: l[2]
Out[546]:
Age Name Location
New 0 1 0 1
0 2 tom ni2ck ca ma
1 8 nic1k car ma ny
添加回答
舉報