Pandas.isna()循环时未被拾取

2024-04-23 21:30:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在遍历一些数据,如果列中不包含任何nan,我想将其与主数据df合并。但是由于某种原因,.isna().any()在循环中不起作用,只有在我单独查看列时才起作用。你知道吗

我目前的代码是:

if df[Stock].isna().any() is False:
    total_df = total_df.merge(df[['Date', Stock]], on='Date', how='left')
else:
    pass

就我而言,这应该会过滤掉任何包含nan的列。但是,它没有,它基本上看起来什么也不做,因为我的df一旦完成,它就包含了nan列以及我真正想要的列。我也试过==True,但没用。当我使用print(df[Stock].isna().any())检查一个我知道的事实的列时,程序正确地返回True。所以我的问题是为什么这个循环不起作用?你知道吗

我已经在这部片子上主演了好几个小时了,有可能我正在做一件不可思议的蠢事,所以需要一双新鲜的眼睛,但我真的被难住了。干杯

编辑:

所以值得一提的是,当我计算每一列的和时,它会返回一个实际的数字。所以当我手动检查df时,熊猫似乎没有很清楚地识别出什么是nan。但是,在执行循环之前,我必须对我的pd.to_numeric数据进行df运算,否则我就不能在后期对价格数据进行任何计算。有没有可能这会影响到事情?你知道吗


Tags: 数据代码falsetruedfdateifis
2条回答

没有你的代码我无法测试它,但是试着把这个代码放到for循环中。不确定['Date','column']是否应该加引号,但请同时尝试这两种方法。你知道吗

for column in df:
    if df[column].isna().any() is False:
        total_df = total_df.merge(df[['Date', 'column']], on='Date', how='left')

错误是使用了is。你知道吗

df[Stock].isna().any() is False:

结果总是错误的,没有合并。但如果你使用:

if not df[col].isna().any():

或者

df[Stock].isna().any() == False:

它起作用了。你知道吗

原因很详细。is不等于==。你知道吗

相关问题 更多 >