这只是我编造的示例数据帧。我有我想看到的输出。我在这里试图实现两件事。
- 将列名称中
.
句点替换为_
下划线。我可以对此单独进行,但我想循环执行此操作,就像我们假设的那样有 40-50 个列名。 - 检查记录上的
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