我的数据类似于:
df = pd.DataFrame({'user': np.random.choice(['a', 'b','c'], size=100, replace=True),
'value1': np.random.randint(10, size=100),
'value2': np.random.randint(20, size=100)})
我用它来产生一些结果,例如,
grouped = df.groupby('user')
results = pd.DataFrame()
results['value2_sum'] = grouped['value2'].sum()
对于此结果数据框的其中一列,我想将用户名传递给另一个使用数据框外数据的函数。
我尝试过类似的事情:
results['user_result'] = grouped.apply(lambda x: my_func(x.index))
但无法找出有效的语法。
答案 0 :(得分:11)
您希望.name
属性访问组索引值:
In [6]:
grouped = df.groupby('user')
results = pd.DataFrame()
results['value2_sum'] = grouped['value2'].sum()
results['user_result'] = grouped.apply(lambda x: x.name)
results
Out[6]:
value2_sum user_result
user
a 342 a
b 333 b
c 308 c
答案 1 :(得分:2)
results['user_result'] = results.index.values
要将索引值传递给函数,可以使用列表推导。
def my_func(val):
return val + "_" + val
results['my_func'] = [my_func(idx) for idx in results.index]
>>> results
value2_sum user_result my_func
user
a 417 a a_a
b 306 b b_b
c 331 c c_c