python - 在 apply 函数 pandas python 中包含组名

标签 python pandas pandas-groupby apply

是否可以指定 groupby() 调用在 apply() lambda 函数中使用组名?

类似于如果我遍历组,我可以通过以下元组分解获得组键:

for group_name, subdf in temp_dataframe.groupby(level=0, axis=0):
    print group_name

...有没有办法在应用函数中也获取组名,例如:

temp_dataframe.groupby(level=0,axis=0).apply(lambda group_name, subdf: foo(group_name, subdf)

如何获取组名作为 apply lambda 函数的参数?

最佳答案

我认为你应该能够使用name属性:

temp_dataframe.groupby(level=0,axis=0).apply(lambda x: foo(x.name, x))

应该可以,例如:

In [132]:
df = pd.DataFrame({'a':list('aabccc'), 'b':np.arange(6)})
df

Out[132]:
   a  b
0  a  0
1  a  1
2  b  2
3  c  3
4  c  4
5  c  5

In [134]:
df.groupby('a').apply(lambda x: print('name:', x.name, '\nsubdf:',x))

name: a 
subdf:    a  b
0  a  0
1  a  1
name: b 
subdf:    a  b
2  b  2
name: c 
subdf:    a  b
3  c  3
4  c  4
5  c  5
Out[134]:
Empty DataFrame
Columns: []
Index: []

关于python - 在 apply 函数 pandas python 中包含组名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32460593/

相关文章:

python - Pandas:更新第二个数据帧的列值

python - 如何检查pandas组中n个正值的数量

python - 如果我必须删除子数组中的最大元素,如何找到子数组的最大和

python - six.moves.builtins.range 在 Python 2 和 Python 3 中不一致

Python Pandas - groupby() 和 apply() 和rolling() 非常慢

python - 根据另一列对值进行分组并将这些值相加

python - 重新分配 Pandas DataFrame 中的最大值

Python:使用基于嵌套列表中唯一值的列创建 Pandas 数据框

python - pip install 和 sudo pip install 有什么区别?

python - Pandas - 带公式的列