gpt4 book ai didi

python-3.x - 将 dropna 设置为 True 的 Pandas groupby 生成错误的输出

转载 作者:行者123 更新时间:2023-12-05 04:46:13 31 4
gpt4 key购买 nike

在下面的片段中:

import pandas as pd
import numpy as np

df = pd.DataFrame(
{
"a": [1, 2, 3, 4, 5, 6, 7, 8, 9],
"b": [1, np.nan, 1, np.nan, 2, 1, 2, np.nan, 1]
}
)
df_again = df.groupby("b", dropna=False).apply(lambda x: x)

我原以为 dfdf_again 是相同的。但他们不是:

df
a b
0 1 1.0
1 2 NaN
2 3 1.0
3 4 NaN
4 5 2.0
5 6 1.0
6 7 2.0
7 8 NaN
8 9 1.0

df_again
a b
0 1 1.0
2 3 1.0
4 5 2.0
5 6 1.0
6 7 2.0
8 9 1.0

现在,如果我稍微调整 lambda 表达式以“查看”发生了什么df.groupby("b", dropna=False).apply(lambda x: print(x)) 我实际上可以想象 df 的部分 code>bNaN 已处理。

我在这里错过了什么?(使用 Pandas 1.3.1 和 numpy 1.20.3)

最佳答案

因为NoneNone是一回事:

>>> None == None
True
>>>

你必须使用np.nan:

>>> np.NaN == np.NaN
False
>>>

那么试试这个:

df = pd.DataFrame(
{
"a": [1, 2, 3, 4, 5, 6, 7, 8, 9],
"b": [1, np.NaN, 1, np.NaN, 2, 1, 2, np.NaN, 1]
}
)
df_again = df.groupby("b", dropna=False).apply(lambda x: x)

现在 dfdf_again 是一样的:

>>> df
a b
0 1 1.0
1 2 NaN
2 3 1.0
3 4 NaN
4 5 2.0
5 6 1.0
6 7 2.0
7 8 NaN
8 9 1.0
>>> df_again
a b
0 1 1.0
1 2 NaN
2 3 1.0
3 4 NaN
4 5 2.0
5 6 1.0
6 7 2.0
7 8 NaN
8 9 1.0
>>> df.equals(df_again)
True
>>>

关于python-3.x - 将 dropna 设置为 True 的 Pandas groupby 生成错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68918019/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com