如何让熊猫重命名列名并在前面加上0来记录?



这只是我编造的示例数据帧。我有我想看到的输出。我在这里试图实现两件事。

  1. 将列名称中.句点替换为_下划线。我可以对此单独进行,但我想循环执行此操作,就像我们假设的那样有 40-50 个列名。
  2. 检查记录上的Car.Mile是否为 5 位数字。 如果不先于 0
      car.Model   car.Color     car.Year   car.Mile
0       AUDI            RED        2015      14000
1       BUIC            WHITE      2015      9000
2       PORS            BLUE       2016      7000
3       HONDA           BLACK      2015      100000

输出

   car_Model   car_Color     car_Year   car_Mile
0       AUDI            RED        2015      014000
1       BUIC            WHITE      2015      009000
2       PORS            BLUE       2016      007000
3       HONDA           BLACK      2015      100000
您可以使用

str.replace替换.然后按astype和最后一个apply zfill将列car_Mile转换为字符串:

df.columns = df.columns.str.replace('.', '_')
df['car_Mile'] = df['car_Mile'].astype(str).apply(lambda x: x.zfill(6))
print df
  car_Model car_Color  car_Year car_Mile
0      AUDI       RED      2015   014000
1      BUIC     WHITE      2015   009000
2      PORS      BLUE      2016   007000
3     HONDA     BLACK      2015   100000

或:

df.columns = df.columns.str.replace('.', '_')
df['car_Mile'] = df['car_Mile'].astype(str).apply(lambda x: '{0:0>6}'.format(x))
print df
  car_Model car_Color  car_Year car_Mile
0      AUDI       RED      2015   014000
1      BUIC     WHITE      2015   009000
2      PORS      BLUE      2016   007000
3     HONDA     BLACK      2015   100000

编辑:

谢谢 Edchum 的改进 - apply不是必需的,更好的是使用str.zfill

df.columns = df.columns.str.replace('.', '_')
df['car_Mile'] = df['car_Mile'].astype(str).str.zfill(6)
print df
  car_Model car_Color  car_Year car_Mile
0      AUDI       RED      2015   014000
1      BUIC     WHITE      2015   009000
2      PORS      BLUE      2016   007000
3     HONDA     BLACK      2015   100000

最新更新