我有一个处理两个系列的功能。该算法需要该函数来接收整个系列。 我有数据存储在DataFrameGroupBy对象中。因此,我想将该函数应用于整个列。 哪种方式最常用?
我已经制作了一些试图简化手头问题的代码:
import numpy as np
import pandas as pd
df = pd.DataFrame({
'clients': pd.Series(['A', 'A', 'A', 'B', 'B']),
'odd1': pd.Series(['1', '2', '3', '4', '5']),
'odd2': pd.Series(['6', '7', '8', '9', '10'])})
def strange_fun(s1, s2):
return np.sum(s1) + np.sum(s2)
df.groupby('clients')[['odd1', 'odd2']].apply(lambda el: strange_fun(el[0], el[1]), axis=0)
我有点bit confused
答案 0 :(得分:1)
是将整个组(作为DataFrame)传递给一个选项,然后将其拆分到函数中吗?
如果需要引用实际列,可以传递名称:
def strange_fun(el, cols):
s1 = el[cols[0]]
s2 = el[cols[1]]
return np.sum(s1) + np.sum(s2)
df.groupby('clients')[['odd1', 'odd2']].apply(lambda el: strange_fun(el, ['odd1', 'odd2']))
或者只是通过整数索引列:
def strange_fun(el):
s1 = el.iloc[:,0]
s2 = el.iloc[:,1]
return np.sum(s1) + np.sum(s2)
df.groupby('clients')[['odd1', 'odd2']].apply(lambda el: strange_fun(el))