【发布时间】:2019-11-10 19:21:36
【问题描述】:
我有一个简单的 DataFrame 对象:
df = pd.DataFrame(np.random.random_sample((5,5)))
df["col"] = ["A", "B", "C", "A" ,"B"]
#simple function
def func_apply(df,param=1):
pd.Series(np.random(3)*param,name=str(param))
现在将函数结果应用到预期的 DataFrame 中
df.groupby('col').apply(func_apply)
1 0 1 2
col
A 0.928527 0.383567 0.085651
B 0.567423 0.668644 0.689766
C 0.301774 0.156021 0.222140
有没有办法将参数列表传递给 groupby 以获得类似的东西?
#Pseudocode...
df.groupby('col').apply(func_apply, params=[1,2,10])
1 0 1 2
par col
1 A 0.928527 0.383567 0.085651
1 B 0.567423 0.668644 0.689766
1 C 0.301774 0.156021 0.222140
2 A 0.526494 1.812780 1.515816
2 B 1.180539 0.527171 0.670796
2 C 1.507721 0.156808 1.695386
10 A 7.986563 5.109876 2.330171
10 B 2.096963 6.804624 2.351397
10 C 6.890758 8.079466 1.725226
非常感谢任何提示:)
【问题讨论】:
-
所以你想“重复”子数据框,对吧?
-
那是伪代码。我想在数据框上应用具有不同参数的函数。所以基本上是第一个结果与不同参数的组合。现在我只添加了一个,但在我的用例中,还有更多。我知道如果参数在 DataFrame 内,这将起作用,那么它可以通过语句添加到组中。PS:希望很清楚。刚刚添加了预期的df。这些值随着参数值的增加而增加。
标签: python pandas dataframe pandas-groupby split-apply-combine