Я хочу сделать две слегка отличающиеся операции в 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
. Есть идеи?