熊猫组。应用方法复制第一组
我的第一个问题是:我对熊猫群体应用方法的这种行为感到困惑(0.12.0-4),它似乎两次将这个函数应用到数据框架的第一行。例如:
>>> from pandas import Series, DataFrame
>>> import pandas as pd
>>> df = pd.DataFrame({'class': ['A', 'B', 'C'], 'count':[1,0,2]})
>>> print(df)
class count
0 A 1
1 B 0
2 C 2
我首先检查groupby函数是否正常工作,它似乎很好:
>>> for group in df.groupby('class', group_keys = True):
>>> print(group)
('A', class count
0 A 1)
('B', class count
1 B 0)
('C', class count
2 C 2)
然后,我尝试使用groupby对象执行类似的操作,并获得第一行输出两次:
>>> def checkit(group):
>>> print(group)
>>> df.groupby('class', group_keys = True).apply(checkit)
class count
0 A 1
class count
0 A 1
class count
1 B 0
class count
2 C 2
任何帮助都将不胜感激!谢谢。
编辑:@Jeff提供了下面的答案。我很密集,没有立即理解它,所以这里有一个简单的例子来说明,尽管上面示例中的第一个组有双打印输出,但Apply方法在第一个组上只运行了一次,并且不改变原始数据框架:
>>> def addone(group):
>>> group['count'] += 1
>>> return group
>>> df.groupby('class', group_keys = True).apply(addone)
>>> print(df)
class count
0 A 1
1 B 0
2 C 2
但是,通过将方法的返回分配给一个新对象,我们可以看到它按预期工作:
df 2=df.groupby(‘class’,group_key=True).application(Addone)print(Df 2)
class count
0 A 2
1 B 1
2 C 3
相关分类