我正在处理一个大型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列返回所有值。我的意思是,它不是在过滤第二列。
请提出一些建议。
答案 0 :(得分:0)
实际上,您的代码运行良好。我认为错误是您如何理解逻辑运算符
您在这里告诉python:带d2['CBF_01']==1
和d2['P_NUMFLU']!='NA'
var = d2[(d2['CBF_01']==1) & (d2['P_NUMFLU']!='NA')][['CBF_01','P_NUMFLU']]
如果您需要d2['CBF_01']==1
或d2['P_NUMFLU']!='NA'
,则应更改&
并改用|
:
var = d2[(d2['CBF_01']==1) | (d2['P_NUMFLU']!='NA')][['CBF_01','P_NUMFLU']]