【发布时间】:2019-07-30 22:59:12
【问题描述】:
我正在解决一个问题,我在 pandas 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)
当我在我的 Windows 笔记本电脑上运行上述代码时,我得到了预期的结果
a b c d
a
1 0 1 1 1 1
1 1 1 1 1
2 1 2 2 2
3 1 2 2 2
2 4 2 1 3 1
5 2 1 3 1
6 2 2 4 2
7 2 2 4 2
在 Mac 上运行相同的代码
a b c d
a
1 0 1 1 1 1
1 1 1 1 1
2 1 2 2 2
3 1 2 2 2
2 4 1 1 3 1
5 1 1 3 1
6 1 2 4 2
7 1 2 4 2
这里的问题是,在“a”列中,最后 4 个条目是 1,而在 Windows 机器上它们应该是 2。
编辑:
两者的 Pandas 版本:0.24.2
Windows 上的 Python 版本:3.7.3
Mac 上的 Python 版本:3.7.4
【问题讨论】:
-
请同时发布pandas版本和python版本
-
谢谢,我做了修改。
标签: python pandas pandas-groupby