熊猫组。应用方法复制第一组

熊猫组。应用方法复制第一组

我的第一个问题是:我对熊猫群体应用方法的这种行为感到困惑(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


哈士奇WWW
浏览 428回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP