我有一个格式不正确的日期的很大程度上是空的数据框,我将其转换为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

最佳答案

我不完全确定为什么会发生这种情况[1],我的最佳猜测是,沿any沿轴0正常工作时,沿第一个轴的不同数据类型会导致此意外结果。但是,我认为这的解决方法实际上是一种更好的方法,因为读者可以立即清楚地知道要检查的内容是什么。

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

解决方法很简单,请使用notnullany类型的同构掩码上使用bool,而不是使用包含混合类型的DataFrame

df.notnull().any(1)
0    False
1    False
2     True
3    False
4    False
dtype: bool

[1]这似乎是recognized as a bug

关于python - Pandas an​​y()返回false并显示真实值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52732364/

10-13 04:35