如果我取两列浮点的最大值,即使有些是NaN,结果也是可以预测的:
>>> df = pd.DataFrame({"a": [1.0, 2.0, 3.0, 4.0],
"b": [3, 2, float("nan"), 9]})
>>> df
a b
0 1.0 3.0
1 2.0 2.0
2 3.0 NaN
3 4.0 9.0
>>> df.dtypes
a float64
b float64
dtype: object
>>> df[["a", "b"]].max(axis=1)
0 3.0
1 2.0
2 3.0
3 9.0
dtype: float64
虽然我不知道为什么3.0和NaN的最大值不是NaN。你知道吗
但是,如果列包含非浮点类型(本例中为字符串),则NaN似乎会完全污染结果:
>>> df = pd.DataFrame({"a": ["1", "2", "3", "4"],
"b": ["3", "2", float("nan"), "9"]})
>>> df
a b
0 1 3
1 2 2
2 3 NaN
3 4 9
>>> df.dtypes
a object
b object
dtype: object
>>> df[["a", "b"]].max(axis=1)
0 NaN
1 NaN
2 NaN
3 NaN
dtype: float64
我期望max()调用的输出是3,2,NaN,9。你知道吗
您可以告诉熊猫在获取^{} 时包含什么,但只有
float
、int
和boolean
是有效类型。没有将字符串隐式转换为数字类型,因此在df
中,像"3"
这样的元素不包括在取最大值中。唯一的数值是NaN
,因此返回。你知道吗要获得预期的结果,首先需要将字符串转换为数字类型,例如
然后提供
skipna=False
以包含NaN
:相关问题 更多 >
编程相关推荐