【问题标题】:Add a zero before 1 digit number in a column pandas dataframe在 Pandas 数据框中的列中的 1 位数字之前添加一个零
【发布时间】:2021-05-05 12:39:59
【问题描述】:
我的 pandas 数据框中有一列包含法国城市的公社。这是一个例子:
| index |
Com |
| 1 |
Paris 3 |
| 2 |
Paris 17 |
| 3 |
Marseille 5 |
| 4 |
Abainville |
| 5 |
Aast |
| 6 |
Marseille 15 |
| 7 |
Lyon 4 |
除了我想在单个数字上加一个 0 来得到这个:
| index |
Com |
| 1 |
Paris 03 |
| 2 |
Paris 17 |
| 3 |
Marseille 05 |
| 4 |
Abainville |
| 5 |
Aast |
| 6 |
Marseille 15 |
| 7 |
Lyon 04 |
我能做什么?
【问题讨论】:
标签:
python
pandas
dataframe
numbers
digits
【解决方案1】:
df.Com = df.Com.str.replace(r"\D(\d)$", r" 0\1")
您可以看到regex demo。它在字符串的末尾查看一个非数字和一个数字。捕获单个数字(在 \1 中)并用 0 填充。
得到
>>> df
index Com
0 1 Paris 03
1 2 Paris 17
2 3 Marseille 05
3 4 Abainville
4 5 Aast
5 6 Marseille 15
6 7 Lyon 04
【解决方案2】:
使用zfill 方法补零。
df = df.convert_dtypes()
df.Com = df.Com.astype(str).str.zfill(2)
【解决方案3】:
使用您展示的示例,请尝试以下操作。使用 Pandas str.replace 函数。
df['Com'].str.replace(r"^(\S+)(\s+)(\d)$", r"\g<1>\g<2>0\g<3>")
输出如下:
index Com
0 1 Paris 03
1 2 Paris 17
2 3 Marseille 05
3 4 Abainville
4 5 Aast
5 6 Marseille 15
6 7 Lyon 04