使用pandas

时间:2018-05-21 22:03:24

标签: python pandas

我正在使用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。我做错了什么?

1 个答案:

答案 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)

如果这不起作用,请更新您的问题以包含复制问题的样本数据。