pandas 数据框中的 Groupby() 和 mean() 返回多于两列
Groupby() and mean() in pandas dataframe with returning more than two columns
超级简单的一道题,至今找不到。
这是我的数据框
id Name Lastname Journal Article Score
0 1 John Doo Journal2 Article1 23
1 2 John Doo Journal1 Article2 12
2 3 Bill Foo Journal17 Article3 8
当我使用
df.groupby('id', as_index=False)['Score'].mean()
它给了我
id Score
0 1 17.5
1 2 8.0
预期产出
id Name Lastname Score
0 1 Joe Doe 17.5
1 2 Bill Foo 8.0
如果 Name
和 Lastname
列中每个 id
的值相同,则将其添加到 groupby
:
df.groupby(['id','Name','Lastname'], as_index=False)['Score'].mean()
如果可能,每个 id
的不同值是可能的,提取每个组的 first/last 个值:
df.groupby('id', as_index=False).agg({'Score':'mean', 'Name':'first', 'Lastname':'first'})
df.groupby('id', as_index=False).agg({'Score':'mean', 'Name':'last', 'Lastname':'last'})
超级简单的一道题,至今找不到。
这是我的数据框
id Name Lastname Journal Article Score
0 1 John Doo Journal2 Article1 23
1 2 John Doo Journal1 Article2 12
2 3 Bill Foo Journal17 Article3 8
当我使用
df.groupby('id', as_index=False)['Score'].mean()
它给了我
id Score
0 1 17.5
1 2 8.0
预期产出
id Name Lastname Score
0 1 Joe Doe 17.5
1 2 Bill Foo 8.0
如果 Name
和 Lastname
列中每个 id
的值相同,则将其添加到 groupby
:
df.groupby(['id','Name','Lastname'], as_index=False)['Score'].mean()
如果可能,每个 id
的不同值是可能的,提取每个组的 first/last 个值:
df.groupby('id', as_index=False).agg({'Score':'mean', 'Name':'first', 'Lastname':'first'})
df.groupby('id', as_index=False).agg({'Score':'mean', 'Name':'last', 'Lastname':'last'})