Python从字符串列的数据选择中过滤出nan

如果不使用groupby我如何在没有NaN的情况下过滤数据

假设我有一个矩阵,客户将填写'N/a'、'N/a'或其任何变体,其他人则将其留空:

将熊猫作为pd导入
将numpy作为np导入
df=pd.DataFrame({'movie':['thg','thg','mol','mol','mol','lob','lob'],
‘评级’:[3,4,5,np.nan,np.nan,np.nan],
'姓名':['John',np.nan',N/A','Graham',np.nan,np.nan]})
nbs=df['name'].str.extract('^(N/A | NA | NA | N/A)'
nms=df[(df['name']!=nbs)]

输出:

&gt&燃气轮机&燃气轮机;网络管理系统
电影名称评级
约翰3号
1 thg NaN 4
3摩尔格雷厄姆南
4罗楠楠
5罗南南

我如何筛选出NaN值,以便获得如下结果:

电影名称分级
约翰3号
3摩尔格雷厄姆南

我猜我需要类似于~np.isnan的东西,但是tilda不能处理字符串

放下它们:

nms.dropna(thresh=2)

这将删除至少有两个非NaN的所有行

然后,您可以在名称为NaN的地方删除:

[87]on

:
网络管理系统
Output[87]:
电影名称评级
约翰3号
1 thg NaN 4
3摩尔格雷厄姆南
4罗楠楠
5罗南南
[5行x 3列]
At[89]on:
nms=nms.dropna(阈值=2)
At[90]on:
nms[nms.name.notnull()]
Output[90]:
电影名称评级
约翰3号
3摩尔格雷厄姆南
[2行x 3列]

编辑

实际上,看看您最初想要的是什么,您就可以这样做,而无需调用dropna

nms[nms.name.notnull()]

更新

3年后看这个问题,有一个错误,首先thresharg查找至少nnon-NaN值,因此实际上输出应该是:

[4]on

:
nms.dropna(阈值=2)
Output[4]:
电影名称评级
0 thg约翰3.0
1 thg NaN 4.0
3摩尔格雷厄姆南

可能是3年前我弄错了,或者是我运行的熊猫版本有错误,这两种情况都是完全可能的

发表评论