在不同条件下修改pandas数据帧的列

时间:2017-11-15 10:01:56

标签: python-3.x pandas dataframe

这是我的数据框,我想将c和d列中的值转换为KB。 这里M代表兆字节,G代表技嘉。如何做到。

               b         c         d
              abc      12.8G     12.6G
              def      2.67M      3.4G
              ghi      12.5G     34.5M
              jkl      12.1G      1.2G

1 个答案:

答案 0 :(得分:0)

.str访问者的Dict映射将有所帮助,即

di = {'M':10**3,'G':10**6 }

df[['c','d']] = df[['c','d']].apply(lambda x : pd.to_numeric(x.str[:-1]) * x.str[-1].map(di)).astype(str) + 'KB'
     b             c             d
0  abc  12800000.0KB  12600000.0KB
1  def      2670.0KB   3400000.0KB
2  ghi  12500000.0KB     34500.0KB
3  jkl  12100000.0KB   1200000.0KB

如果只需要整数,则使用

df[['c','d']].apply(lambda x : pd.to_numeric(x.str[:-1]) * x.str[-1].map(di)).astype(int)