【发布时间】:2021-11-10 18:19:59
【问题描述】:
如果行在某些列中具有匹配的值,我希望能够将它们组合为一个,但是我只希望在值在列表中时将它们分组。例如,
team_sports = ['football', 'basketball']
view of df
country sport age
USA football 21
USA football 28
USA golf 20
USA golf 44
China football 30
China basketball 22
China basketball 41
wanted outcome
country sport age
USA football 21,28
USA golf 20
USA golf 44
China football 30
China basketball 22,41
The attempt I made was,
team_sports = ['football', 'basketball']
for i in df['Sport']:
if i in team_sports:
group_df= df.groupby(['Country', 'Sport'])['Age'].apply(list).reset_index()
这需要很长时间才能运行,我正在使用的数据库有 100,000 行。
非常感谢任何帮助,谢谢
【问题讨论】:
-
你为什么一遍又一遍地这样做。
group_df= df.groupby(['Country', 'Sport'])['Age'].apply(list).reset_index()不是第一次给你预期的结果吗? -
@HenryEcker 我不确定你的意思,但我输入了一个 for,因此它不会将不同运动的行组合在一起,例如上面的高尔夫。如果我误解了,请纠正我。
-
我明白了,我错过了仅对列表中的行进行分组的部分。顺序重要吗?您是否需要它们按照它们出现的顺序排列,或者只要所有结果都存在,顺序就无关紧要了吗?
-
@HenryEcker 顺序无所谓,只要有结果就行了