【问题标题】:Pandas any() returning false with true values presentPandas any() 返回 false 并存在真值
【发布时间】:2019-03-14 21:37:44
【问题描述】:

我有一个大部分为空的数据框,其中包含格式不佳的日期,我将其转换为 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

【问题讨论】:

标签: python pandas datetime


【解决方案1】:

我不完全确定为什么会发生这种情况[1],我最好的猜测是沿第一个轴的不同数据类型会导致这种意外结果,因为@ 987654323@ 沿轴0 按预期工作。 然而,我认为解决这个问题的方法实际上是一种更好的方法,因为读者可以更直接地清楚你到底在检查什么。


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

解决方法很简单,使用notnullbool 类型的同质掩码上使用any,而不是包含混合类型的DataFrame

df.notnull().any(1)

0    False
1    False
2     True
3    False
4    False
dtype: bool

[1]这似乎是recognized as a bug

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 1970-01-01
    相关资源
    最近更新 更多