Pandas groupby: 当前组的坐标
Pandas groupby: coordinates of current group
假设我有一个数据框
import pandas as pd
df = pd.DataFrame({'group':['A','A','B','B','C','C'],'score':[1,2,3,4,5,6]})
首先,比如说,我想计算各组的分数总和。我经常
def group_func(x):
d = {}
d['sum_scores'] = x['score'].sum()
return pd.Series(d)
df.groupby('group').apply(group_func).reset_index()
现在假设我想修改group_func
,但是这个修改要求我知道当前输入x
的组标识。我在函数的定义中尝试了 x['group']
和 x[group].iloc[0]
,但都没有用。
Is there a way for the function group_func(x)
to know the defining coordinates of the current input x
?
在这个玩具示例中,我只想得到:
pd.DataFrame({'group':['A','B','C'],'sum_scores':[3,7,11],'name_of_group':['A','B','C']})
显然最后一列只是重复第一列。我想知道如何使用像 group_func(x)
这样的函数制作最后一列。比如:当 group_func
处理对应于组 'A' 的 x
并为 sum_scores
生成值 3 时,我如何提取当前身份 'A' group_func
?
的本地范围
只需添加.name
def group_func(x):
d = {}
d['sum_scores'] = x['score'].sum()
d['group_name'] = x.name # d['group_name'] = x['group'].iloc[0]
return pd.Series(d)
df.groupby('group').apply(group_func)
Out[63]:
sum_scores group_name
group
A 3 A
B 7 B
C 11 C
您的代码修复请参阅有关标记行添加 ''
假设我有一个数据框
import pandas as pd
df = pd.DataFrame({'group':['A','A','B','B','C','C'],'score':[1,2,3,4,5,6]})
首先,比如说,我想计算各组的分数总和。我经常
def group_func(x):
d = {}
d['sum_scores'] = x['score'].sum()
return pd.Series(d)
df.groupby('group').apply(group_func).reset_index()
现在假设我想修改group_func
,但是这个修改要求我知道当前输入x
的组标识。我在函数的定义中尝试了 x['group']
和 x[group].iloc[0]
,但都没有用。
Is there a way for the function
group_func(x)
to know the defining coordinates of the current inputx
?
在这个玩具示例中,我只想得到:
pd.DataFrame({'group':['A','B','C'],'sum_scores':[3,7,11],'name_of_group':['A','B','C']})
显然最后一列只是重复第一列。我想知道如何使用像 group_func(x)
这样的函数制作最后一列。比如:当 group_func
处理对应于组 'A' 的 x
并为 sum_scores
生成值 3 时,我如何提取当前身份 'A' group_func
?
只需添加.name
def group_func(x):
d = {}
d['sum_scores'] = x['score'].sum()
d['group_name'] = x.name # d['group_name'] = x['group'].iloc[0]
return pd.Series(d)
df.groupby('group').apply(group_func)
Out[63]:
sum_scores group_name
group
A 3 A
B 7 B
C 11 C
您的代码修复请参阅有关标记行添加 ''