python - pandas GroupBy 具有 NaN(缺失)值的列

标签 python pandas group-by pandas-groupby nan

我有一个 DataFrame,其中的列中有许多缺失值,我希望对其进行分组:

import pandas as pd
import numpy as np
df = pd.DataFrame({'a': ['1', '2', '3'], 'b': ['4', np.NaN, '6']})

In [4]: df.groupby('b').groups
Out[4]: {'4': [0], '6': [2]}

看到 Pandas 删除了目标值为 NaN 的行。 (我想包括这些行!)

由于我需要许多这样的操作(许多列都有缺失值),并且使用比中位数更复杂的函数(通常是随机森林),所以我想避免编写过于复杂的代码。

有什么建议吗?我应该为此编写一个函数还是有一个简单的解决方案?

最佳答案

Pandas >= 1.1

从 pandas 1.1 开始,您可以更好地控制此行为,NA values are now allowed in the grouper使用dropna=False:

pd.__version__
# '1.1.0.dev0+2004.g8d10bfb6f'

# Example from the docs
df

   a    b  c
0  1  2.0  3
1  1  NaN  4
2  2  1.0  3
3  1  2.0  2

# without NA (the default)
df.groupby('b').sum()

     a  c
b        
1.0  2  3
2.0  2  5
# with NA
df.groupby('b', <b>dropna=False</b>).sum()

     a  c
b        
1.0  2  3
2.0  2  5
NaN  1  4

关于python - pandas GroupBy 具有 NaN(缺失)值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436594/

相关文章:

mysql - 选择所有不同的最新记录

python - Django - 没有名为 PIL 的模块

Python 日期格式 2012 年 1 月 1 日 - 2012 年 1 月 31 日

python - 转置 Pandas 数据框

python - Dataframe 无法填充 Pandas 中的 NaN 值

python - 强制所有行在条件后取值

python - 根据查找函数标准拼接数据框中的整个列

python - 使用正则表达式 python 迭代数据框

mysql - 在 MySQL 中使用 GROUP BY 选择具有同一列的两个条件的行的最佳方法是什么?

java - java中使用groupby()进行动态分组