如何让Pandas重命名列名并在0前加上记录?

时间:2016-03-03 13:52:24

标签: python pandas insert dataset rename

这只是我编写的示例DataFrame。我输出了我想看到的内容。我想在这里尝试两件事。

  1. 使用.下划线替换列名称中的句点_。我可以 对于这个单独但我想在循环中这样做,就像我们假设的那样 有40-50个列名。
  2. 检查记录中Car.Mile是否为5位数。如果不是prerend 0's
  3.       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
    

1 个答案:

答案 0 :(得分:2)

您可以使用str.replace替换.然后将列car_Mile转换为字符串astype和上一个apply zfill

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