gpt4 book ai didi

python - 用 Pandas 计算每行的 NaN

转载 作者:太空狗 更新时间:2023-10-30 00:47:07 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何在我的数据框中输出 First_Name 列的频率;每行。到目前为止,我已经成功地做到了这一点,但我还想知道如何计算每行的 NaN 值和非 NaN 值。

下面是一个包含两列的数据框:First_Name 和 Favorite_Color。我想看看我是否可以获得 First_Name 列的计数。当我输出代码时,我只能得到非 NaN 值的计数。有没有一种方法可以同时包含 NaN 值的计数并将其作为数据框的一部分?

import pandas as pd

d =
{
'First_Name': ["Jared", "Lily", "Sarah", "Bill", "Bill", "Alfred", None],
'Favorite_Color': ["Blue", "Blue", "Pink", "Red", "Yellow", "Orange", "Red"]
}

df = pd.DataFrame(data=d)

df['countNames'] = df.groupby('First_Name')['First_Name'].transform('count')

print(df)

我希望得到 NaN 和非 NaN 值的计数,但我只得到了非 NaN 值的计数。

编辑:谢谢大家!

我真的很喜欢阅读每个人的回答,看到这么多不同的解决方案真的很有趣!我认为 SH-SF 的答案很好,因为它更容易理解,但确实需要使用 numpy 库来获得答案。

最佳答案

IIUC,这应该可以满足您的需求。

nasum=df['First_Name'].isnull().sum()
df['countNames'] = df.groupby('First_Name')['First_Name'].transform('count').replace(np.nan,nasum)

或者,按照 ALollz 的建议,下面的代码也将提供相同的结果

df['countNames'] = df.groupby('First_Name')['First_Name'].transform('count').fillna(nasum)

输入

       First_Name   Favorite_Color
0 Jared Blue
1 Lily Blue
2 Sarah Pink
3 Bill Red
4 Bill Yellow
5 Alfred Orange
6 None Red
7 None Pink

输出

     First_Name     Favorite_Color  countNames
0 Jared Blue 1.0
1 Lily Blue 1.0
2 Sarah Pink 1.0
3 Bill Red 2.0
4 Bill Yellow 2.0
5 Alfred Orange 1.0
6 None Red 2.0
7 None Pink 2.0

关于python - 用 Pandas 计算每行的 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58020519/

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