熊猫an​​y()返回false并显示真实值

时间:2018-10-10 03:52:33

标签: python pandas datetime

我有一个日期格式很大的空数据框,我将其转换为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 个答案:

答案 0 :(得分:7)

我不确定为什么会发生这种情况 [1] ,我最好的猜测是沿第一轴的不同数据类型会导致此意外结果,例如{ {1}}沿轴any正常工作。 但是,我认为无论如何,这种解决方法实际上是一种更好的方法,因为它可以使读者更清楚地知道您到底要检查什么。


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

解决方法很简单,请使用pandas在类型notnull的同构掩码上使用any,而不是在包含混合类型的DataFrame中使用

bool

df.notnull().any(1)

[1] 这似乎是recognized as a bug