使用用户定义的函数进行分组的 Pandas
- 论坛
- 使用用户定义的函数进行分组的 Pandas
50 浏览
使用用户定义的函数进行分组的 Pandas
我理解将函数作为分组键传递时,该函数会按照每个索引值调用一次,并将返回值用作分组名称。但我无法弄清楚如何在列值上调用该函数。
所以我可以这样做:
people = pd.DataFrame(np.random.randn(5, 5), columns=['a', 'b', 'c', 'd', 'e'], index=['Joe', 'Steve', 'Wes', 'Jim', 'Travis']) def GroupFunc(x): if len(x) > 3: return 'Group1' else: return 'Group2' people.groupby(GroupFunc).sum()
这将数据分成两组,其中一组的索引值长度小于等于3,另一组的索引值长度大于3。但是如何传递其中一列的值呢?例如,如果每个索引点的列d的值大于1。我意识到我可以简单地这样做:
people.groupby(people.a > 1).sum()
但我想知道如何在用户定义的函数中做到这一点,以供将来参考。
类似于这样:
def GroupColFunc(x): if x > 1: return 'Group1' else: return 'Group2'
但是我该如何调用它呢?
我尝试了:
people.groupby(GroupColFunc(people.a))
和类似的变体,但这不起作用。
我如何将列值传递给函数?
如果要根据people.a > people.b这样的条件进行分组,我该如何传递多个列值?