首页 > 解决方案 > 如何让 pandas.Series.str.get_dummies() 报告 NaN?

问题描述

我在文件中有数据。类似 CSV 但每个字段有多个值是可能的。我使用 get_dummies() 生成我的专栏的概述。里面有什么,频率如何。就像带有标称数据的直方图一样。我想查看缺失的(nan)值。但是我的代码隐藏了它们。

我正在使用:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.get_dummies.html

我不能使用:https : //pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html dummy_na 可以解决问题

原因:我需要 sep 参数。

来说明区别。

import pandas
data = pandas.read_csv("testdata.csv",sep=";")
Bla["a"].str.get_dummies(",").sum() #no nan values
pandas.get_dummies(Bla["a"],dummy_na=True).sum() #not separated

数据:

a;b
Test,Tes;
;a
Tes;a
T;b

我希望:

T           1
Tes         2
Test        1
NaN         1

但输出是:

T       1
Tes     2
Test    1
dtype: int64

或者

T           1
Tes         1
Test,Tes    1
NaN         1
dtype: int64

很高兴也使用另一个功能!也许 .str 部分是问题所在。我还没有完全弄清楚那是做什么的。

标签: pythonpython-3.xpandas

解决方案


首先将缺失值替换为Series.fillna,然后在索引中替换renameNaN

print (data["a"].fillna('Missing').str.get_dummies(",").sum().rename({'Missing':np.nan}))
NaN     1
T       1
Tes     2
Test    1
dtype: int64

推荐阅读