我有一个大型DataFrame的标准分组:
agroup = data.groupby("Product No")
然后,我想对每个组应用一个函数。此函数为每个组计算两个值
def compute_thing(df):
v1, v2 = calc(df)
return v1, v2
我需要的是一个包含两列的DataFrame,每列都来自元组。
我尝试过:
agroup.apply(compute_thing)
但是这会创建一个列,并将值放在元组中。我尝试从compute_thing
返回系列或词组,但它从未起作用..
任何想法如何解决这个问题?
答案 0 :(得分:1)
compute_thing
应该返回一个DataFrame,而不是一个元组。例如:
import pandas as pd
df = pd.DataFrame({
'foo': [1, 1, 2, 2, 3, 3],
'bar': [1, 2, 3, 4, 5, 6]
})
def compute_thing(group):
return pd.DataFrame({
'foo_mu': group['foo'].mean(),
'bar_mu': group['bar'].mean()
}, index=[0])
df.groupby('foo').apply(compute_thing)
导致
bar_mu foo_mu
foo
1 0 1.5 1
2 0 3.5 2
3 0 5.5 3