我正在尝试找出如何在我的数据框中逐行输出“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库来进行回答。
.fillna(nasum)
的语法,因为它读起来更加简单明了:D。这也支持downcast='int'
作为参数,因为这些都是整数。+1 - ALollzdf.fillna(nasum)
会用nasum
填充所有列中的 NA 吗?我想避免这种情况。 - moys.fillna(nasum)
的解决方案。感谢建议。 - moys