我正在研究在熊猫DataFrame上使用嵌套groupby.apply的问题。在第一个应用中,我将添加一个列,用于第二个内部groupby.apply。合并的结果对我来说似乎是错误的。谁能向我解释为什么出现以下现象以及如何可靠地解决它?
这是一个最小的示例:
import numpy as np
import pandas as pd
T = np.array( [
[1,1,1],
[1,1,1],
[1,2,2],
[1,2,2],
[2,1,3],
[2,1,3],
[2,2,4],
[2,2,4],
])
df = pd.DataFrame(T, columns= ['a','b','c' ])
print(df)
def foo2(x):
return x
def foo(x):
print("*" * 80 )
# Add column d and groupby/apply on column 'd'
x['d'] = [1, 1, 2, 2]
x = x.groupby('d').apply(foo2)
print(x)
print("*" * 80)
return x
# Apply first groupby/apply on column 'a'
df = df.groupby('a').apply( foo)
print("*"*80)
print("*"*80)
print(df)
Run Code Online (Sandbox Code Playgroud)
当我在Windows笔记本电脑上运行上述代码时,我得到了预期的结果
a …Run Code Online (Sandbox Code Playgroud)