遇到python数据框问题

时间:2020-10-06 17:50:36

标签: python python-3.x pandas dataframe

我正在处理一个大型CSV文件(28465 * 475)。我只需要此文件中的两列,即CBF_01和P_NUMFLU。我选择了这些列,但是在过滤这些列中的数据时遇到了问题。我已经尝试过此代码:

def average_influenza_dozes():
    fopen = pd.read_csv('NISPUF17.csv', usecols= ['CBF_01 ', 'P_NUMFLU '])     

    new_df=fopen.rename(mapper=str.strip, axis='columns')    

    var = new_df[['CBF_01','P_NUMFLU']][(new_df['CBF_01']==1) & (new_df['P_NUMFLU']!='NA')] 
    return var

问题是它从C_F_01 == 1的P_NUMFLU列返回所有值。我的意思是,它不是在过滤第二列。

请提出一些建议。

1 个答案:

答案 0 :(得分:0)

实际上,您的代码运行良好。我认为错误是您如何理解逻辑运算符

您在这里告诉python:带d2['CBF_01']==1d2['P_NUMFLU']!='NA'

的列
var = d2[(d2['CBF_01']==1) & (d2['P_NUMFLU']!='NA')][['CBF_01','P_NUMFLU']]

如果您需要d2['CBF_01']==1d2['P_NUMFLU']!='NA',则应更改&并改用|

var = d2[(d2['CBF_01']==1) | (d2['P_NUMFLU']!='NA')][['CBF_01','P_NUMFLU']]

逻辑运算符的工作方式: enter image description here

相关问题