Pandas any() 返回 false 且存在真值

我有一个格式很差的日期的大部分空数据框,我将其转换为 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])

其中产生


    issue_date  issue_date_dt

0   NaN         NaT

1   NaN         NaT

2   19600215.0  1960-02-15

3   NaN         NaT

4   NaN         NaT

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


df.any(axis=0)


issue_date       True

issue_date_dt    True

dtype: bool

但axis=1只是一直为所有行返回 false。


df.any(axis=1)


0    False

1    False

2    False

3    False

4    False

dtype: bool


动漫人物
浏览 116回答 1
1回答

HUWWW

我不完全确定为什么会发生这种情况[1],我最好的猜测是沿第一个轴的不同数据类型导致了这种意想不到的结果,正如any沿轴预期的那样工作0。 但是,我认为解决这个问题的方法实际上是一种更好的方法,因为读者可以更直接地了解您要检查的内容。这可能是一个错误,如果您同意我建议在pandas github 页面上打开一个问题。解决方法很简单,利用notnulltoany在 type 的同bool构掩码上使用,而不是包含混合类型的 DataFramedf.notnull().any(1)0    False1    False2     True3    False4    Falsedtype: bool
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python