我正在使用Pandas,我需要修改一些列(产品列),这些列应该有数字,但有些条目是空格或字母数字字符。我想将所有非数字条目(包括空格和NaN
)转换为0
。这是我的代码(我正在使用spyder):
Tracker = tracker_master[['Name','Month','Year','Date','Owner',
'Account_Name','Opp','Proposed_Solution',
'Product1','Product2','Product3','Product4','Product5','Signed_Date','Stage','timestamp']]
Tracker_final = Tracker[(Tracker.Year==2018) & (Tracker.Month.isin(['April','May','June','July','August'])) &
(Tracker.Stage.isin(['Inked','Approved']))]
Tracker_final[['Product1','Product2','Product3','Product4','Product5']].apply(pd.to_numeric, errors='coerce').fillna(0)
Tracker_final.to_excel(r'W:\mydrive\B\TrackerFinal.xlsx', index=False)
当我尝试运行此代码时,我仍然会获得Product列的NaN
。我做错了什么?
答案 0 :(得分:1)
您似乎只需要分配回所选列的子数据框:
cols = ['Product'+str(i) for i in range(1, 6)]
Tracker_final[cols] = Tracker_final[cols].apply(pd.to_numeric, errors='coerce').fillna(0)
如果这不起作用,请更新您的问题以包含复制问题的样本数据。