Pandas any()返回false并显示真值

jes*_*WUT 9 python datetime pandas

我有一个很空的数据帧,格式很差的日期我转换成DateTime格式.

from io import StringIO

data = StringIO("""issue_date,issue_date_dt
,
,
19600215.0,1960-02-15
,
,""")

df = pd.read_csv(data, parse_dates=[1])
Run Code Online (Sandbox Code Playgroud)

哪个产生

    issue_date  issue_date_dt
0   NaN         NaT
1   NaN         NaT
2   19600215.0  1960-02-15
3   NaN         NaT
4   NaN         NaT
Run Code Online (Sandbox Code Playgroud)

我希望我可以使用df.any()来查找行或列中是否有值.axis=0表现如预期:

df.any(axis=0)

issue_date       True
issue_date_dt    True
dtype: bool
Run Code Online (Sandbox Code Playgroud)

但是axis=1只对所有行返回false.

df.any(axis=1)

0    False
1    False
2    False
3    False
4    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

use*_*203 7

我不完全确定为什么会发生这种情况[1],我最好的猜测是沿着第一个轴的不同数据类型会导致这种意外结果,因为any沿轴预期工作0. 但是,我认为对此的解决方法实际上是一种更好的方法,因为读者会更清楚地知道您正在检查什么.


这可能是一个错误,如果您同意我建议在pandas github页面上打开一个问题.

解决方法是简单的,利用notnull使用any对型的均匀掩模bool,而不是包含混合类型数据帧一个

df.notnull().any(1)
Run Code Online (Sandbox Code Playgroud)

0    False
1    False
2     True
3    False
4    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

[1]这似乎被认为是一个错误