如何遍历数据框df中的选定列?

约翰·穆特西

我有一个DataFrame,df有3775行×8列。

我的df.columns

Index(['FY', 'Month', 'Sales Area', 'BSP Agent', 'City Booking Office','General Sales Agent', 'Web Sales', 'Total'] of dtype='object'

对于column df[['BSP Agent', 'City Booking Office', 'General Sales Agent', 'Web Sales', 'Total']],我想执行以下操作:从列中删除空格,然后将对象转换为数字。

我用过,for loop但是很混乱

for e in df_c:
    df_c[e] = df_c[e].replace(' ', '', regex=True)
    df_c[e] = pd.to_numeric(df_c[e], errors='coerce').fillna(0, downcast='infer')
    break

有更好的方法来完成我的任务吗?

耶斯列尔

如果从文件和空间创建DataFrame是数千个,最好的解决方案是使用中的thousands参数read_csv,那么将正确的列也转换为数值:

df = pd.read_csv(file, thousands=' ')

使用DataFrame.replaceDataFrame.fillna将所有选定的列按列表使用并转换为数字使用DataFrame.apply

cols = ['BSP Agent', 'City Booking Office', 'General Sales Agent', 'Web Sales', 'Total']

df[cols] = (df[cols].replace(' ', '', regex=True)
                    .apply(lambda x: pd.to_numeric(x, errors = 'coerce'))
                    .fillna(0, downcast='infer'))

样品

np.random.seed(123)

c =['FY', 'Month', 'Sales Area', 'BSP Agent', 
     'City Booking Office','General Sales Agent', 'Web Sales', 'Total']
cols = ['BSP Agent', 'City Booking Office', 'General Sales Agent', 'Web Sales', 'Total']

df = (pd.DataFrame(np.random.rand(5, len(cols)) * 10000, columns=cols)
         .astype(int)
         .applymap(lambda x: '{:,}'.format(x).replace(',', ' '))
         .reindex(c, axis=1, fill_value='data'))
print (df)
     FY Month Sales Area BSP Agent City Booking Office General Sales Agent  \
0  data  data       data     6 964               2 861               2 268   
1  data  data       data     4 231               9 807               6 848   
2  data  data       data     3 431               7 290               4 385   
3  data  data       data     7 379               1 824               1 754   
4  data  data       data     6 344               8 494               7 244   

  Web Sales  Total  
0     5 513  7 194  
1     4 809  3 921  
2       596  3 980  
3     5 315  5 318  
4     6 110  7 224  

cols = ['BSP Agent', 'City Booking Office', 'General Sales Agent', 'Web Sales', 'Total']

df[cols] = (df[cols].replace(' ', '', regex=True)
                    .apply(lambda x: pd.to_numeric(x, errors = 'coerce'))
                    .fillna(0, downcast='infer'))
print (df)
      FY Month Sales Area  BSP Agent  City Booking Office  General Sales Agent  \
0  data  data       data       6964                 2861                 2268   
1  data  data       data       4231                 9807                 6848   
2  data  data       data       3431                 7290                 4385   
3  data  data       data       7379                 1824                 1754   
4  data  data       data       6344                 8494                 7244   

   Web Sales  Total  
0       5513   7194  
1       4809   3921  
2        596   3980  
3       5315   5318  
4       6110   7224  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章