我的第一个SO问题:我对在熊猫(0.12.0-4)中groupby的apply方法的这种行为感到困惑,它似乎将TWICE函数应用于数据帧的第一行。例如:
>>> 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对象应用apply来执行类似的操作,并且两次获得第一行输出:
>>> 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
但是通过将方法的返回值分配给新对象,我们看到它可以按预期工作:
df2 = df.groupby('class',group_keys = True).apply(addone)print(df2)
class count
0 A 2
1 B 1
2 C 3
该apply功能需要知道返回数据的形状,以智能地确定如何将其组合。为此,它将调用函数checkit两次(以你的情况为准)以实现此目的。
根据你的实际使用情况,你可以取代呼叫apply
与aggregate
,transform
或filter
,如详细说明这里。这些函数要求返回值必须是特定的形状,因此不要两次调用该函数。
但是-如果你正在调用的函数没有副作用,那么在第一个值上两次调用该函数就很可能无关紧要。
我的第一个SO问题:我对pandas(0.12.0-4)中groupby的apply方法的这种行为感到困惑,它似乎对数据帧的第一行应用了两次函数。例如: 我首先检查groupby函数是否正常工作,它似乎很好: 然后,我尝试在Groupby对象上使用应用程序做类似的事情,并两次获得第一行输出: 任何帮助都将不胜感激!谢谢 编辑:@Jeff在下面提供了答案。我很密集,没有立即理解它,所以这里有一个简单
本文向大家介绍python实现复制整个目录的方法,包括了python实现复制整个目录的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现复制整个目录的方法。分享给大家供大家参考。具体分析如下: python有一个非常好用的目录操作类库shutil,通过这个库可以很简单的复制整个目录及目录下的文件 希望本文所述对大家的Python程序设计有所帮助。
问题内容: 我知道有,但仅适用于覆盖其他方法的方法。 我有几个带有许多 委托 方法的类(它们 不会 覆盖其他方法)。 他们的Javadoc是否可以“继承”(更确切地说是复制)? 问题答案: @link或@see标记在这里比较合适。如果要包装该方法,则它必须提供独特的行为,这使其不适用于重载或其他情况。
问题内容: 当我运行以下代码时,什么也不会被复制-我在做什么错? 另外,这是将数据从一个阵列复制到另一个阵列的最佳/最有效的方法吗? 问题答案: 我认为您的工作很落后: 应该:
我正在尝试连接到数据帧。它们看起来像这样 期望的最终目标是: 我一直试图使用pd.merge和。连接函数与on='外'设置不成功
我有以下代码: 表是一个列表。 有没有更简短的方法来写这个?我不想在if语句中重复表。