【发布时间】:2020-08-02 03:33:52
【问题描述】:
我想在 apply 函数中为 groupby 执行两个略有不同的操作,如下代码所示:
import pandas as pd
df = pd.DataFrame({'x' : [1,2,2], 'y':['aaa','bbb','ccc']})
print(df)
def func1(x):
stackrow = pd.concat([x, x], axis=0, keys=['a', 'b'], names=['w', 'z'])
return(stackrow)
df2 = df.groupby('x').apply(func1)
print("***********************\ndf2:")
print(df2)
def func2(x):
stackcol = pd.concat([x, x], axis=1, keys=['c', 'd'], names=['w', 'z'])
return(stackcol)
df3 = df.groupby('x').apply(func2)
print("***********************\ndf3:")
print(df3)
但是,正如我在实际示例中提到的 func1 和 func2 具有显着重叠的功能,我不想重新执行该通用功能的代码。我想知道下面的代码是否可以工作。
def func(x):
stackrow = pd.concat([x, x], axis=0, keys=['a', 'b'], names=['z'])
stackcol = pd.concat([x, x], axis=1, keys=['c', 'b'], names=['w'])
return(stackrow, stackcol)
df4, df5 = df.groupby('x').apply(func)
print("***********************\ndf4:")
print(df4)
print("***********************\ndf5:")
print(df5)
但它似乎不适用于df2!=df4 和df3!=df5。有什么想法吗?
【问题讨论】:
标签: pandas pandas-groupby apply