dropna() 不接受 thresh 参数和传递给轴参数的列表
The dropna() does not accept the thresh argument and a list passed to the axis argument
我正在试验 dropna(),已阅读文档。
我创建了一个示例数据框来玩:
col1 col2 col3 col4
0 a 1.0 2.0 3
1 b NaN NaN 6
2 c NaN 8.0 9
3 d NaN 11.0 12
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
现在我遇到的问题是参数 thresh 和将列表传递给参数轴。
a) 忽略阈值并且 dropna() 未在任何行中运行
df.dropna(thresh=1)
和
df.dropna(阈值=2)
return 原始 df 不变。
b) 传递给 axis 参数的列表指示 dropna() 应该在两个轴上同时操作被忽略。选择轴 0,这是默认设置。
df.dropna(axis=[0,1])
returns:
col1 col2 col3 col4
0 a 1.0 2.0 3
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
我仔细阅读了文档并在 Whosebug 上研究了这个主题,但我仍然无法弄清楚我做错了什么。
我们将不胜感激您的建议。
正如 已经提到的 - thresh
需要许多 non-NA 值:
所以如果我们只想 select 那些我们至少有 3 个非 NA 值的行:
In [32]: df.dropna(thresh=3)
Out[32]:
col1 col2 col3 col4
0 a 1.0 2.0 3
2 c NaN 8.0 9
3 d NaN 11.0 12
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
In [33]: df.dropna(thresh=4)
Out[33]:
col1 col2 col3 col4
0 a 1.0 2.0 3
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
内部 Pandas 将使用类似于以下掩码的内容:
In [34]: thresh = 3
In [35]: df.count(1) >= thresh
Out[35]:
0 True
1 False
2 True
3 True
4 True
5 True
6 True
dtype: bool
dropna
正在按预期工作。
对于您的第一个语句 a) df.dropna(thresh=1)
遍历所有行并保留至少有 1 个 non-na 值的每一行。所有行都至少有一个非 na 值,因此不会删除任何内容。 thresh=2
时也是如此 - 所有行至少有 2 个非 na 值。
关于你的第二个问题df.dropna(axis=[0,1])
:列表的顺序很重要。在这里,行将先于列被删除。
我正在试验 dropna(),已阅读文档。
我创建了一个示例数据框来玩:
col1 col2 col3 col4
0 a 1.0 2.0 3
1 b NaN NaN 6
2 c NaN 8.0 9
3 d NaN 11.0 12
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
现在我遇到的问题是参数 thresh 和将列表传递给参数轴。
a) 忽略阈值并且 dropna() 未在任何行中运行
df.dropna(thresh=1)
和 df.dropna(阈值=2) return 原始 df 不变。
b) 传递给 axis 参数的列表指示 dropna() 应该在两个轴上同时操作被忽略。选择轴 0,这是默认设置。
df.dropna(axis=[0,1])
returns:
col1 col2 col3 col4
0 a 1.0 2.0 3
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
我仔细阅读了文档并在 Whosebug 上研究了这个主题,但我仍然无法弄清楚我做错了什么。
我们将不胜感激您的建议。
正如 thresh
需要许多 non-NA 值:
所以如果我们只想 select 那些我们至少有 3 个非 NA 值的行:
In [32]: df.dropna(thresh=3)
Out[32]:
col1 col2 col3 col4
0 a 1.0 2.0 3
2 c NaN 8.0 9
3 d NaN 11.0 12
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
In [33]: df.dropna(thresh=4)
Out[33]:
col1 col2 col3 col4
0 a 1.0 2.0 3
4 e 13.0 14.0 15
5 f 17.0 18.0 19
6 g 21.0 22.0 23
内部 Pandas 将使用类似于以下掩码的内容:
In [34]: thresh = 3
In [35]: df.count(1) >= thresh
Out[35]:
0 True
1 False
2 True
3 True
4 True
5 True
6 True
dtype: bool
dropna
正在按预期工作。
对于您的第一个语句 a) df.dropna(thresh=1)
遍历所有行并保留至少有 1 个 non-na 值的每一行。所有行都至少有一个非 na 值,因此不会删除任何内容。 thresh=2
时也是如此 - 所有行至少有 2 个非 na 值。
关于你的第二个问题df.dropna(axis=[0,1])
:列表的顺序很重要。在这里,行将先于列被删除。