2 回答

TA貢獻1752條經驗 獲得超4個贊
這是一種方法
df['New']=df.groupby('Age').cumcount()
s=df.pivot(index='Age',columns='New',values='Name')
l=[ y.dropna(1) for _ , y in s.groupby(s.isnull().sum(1))]
l[0]
New 0 1 2 3
Age
7 nic6k ju7li nic8k ju9li
l[1]
New 0 1 2
Age
4 j3uli nic4k jul5i
l[2]
New 0 1
Age
2 tom ni2ck
8 nic1k car

TA貢獻1842條經驗 獲得超13個贊
使用collections.defaultdict
from collections import defaultdict
d = defaultdict(list)
for age, df_ in df.groupby('Age'):
d[len(df_.T.columns)].append(df_.reset_index(drop=True).T.loc[['Name']].assign(Age=age))
d = {k: pd.concat(v, ignore_index=True ) for k,v in d.items()}
然后,通過它們擁有的名稱數量訪問數據框。例如,
>>> d[2]
0 1 Age
0 tom ni2ck 2
1 nic1k car 8
>>> d[3]
0 1 2 Age
0 j3uli nic4k jul5i 4
添加回答
舉報