我有一个格式不正确的日期的很大程度上是空的数据框,我将其转换为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上打开一个问题,这可能是一个错误。
解决方法很简单,请使用notnull
在any
类型的同构掩码上使用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 any()返回false并显示真实值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52732364/