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条经验 获得超12个赞
使用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
添加回答
举报