删除序列号中的前导零或外来字符
Remove leading zeros or foreign characters in sequence number
例如:在下面的“样本”列中,我需要删除第 2、3 和 5 列,因为它们要么在开头有一个前导零,要么在开头有一个特殊字符。
Index
Sample
1
12345
2
00152
3
09
4
325
5
.1246
我尝试将“示例”列数据类型更改为字符串并像这样提取第一个字符:
t = df['Sample'].astype(str).str[0].astype(int)
但它给了我这个输出:
print(t)
| 1 | 1 |
| 2 | 1 |
| 3 | 9 |
| 4 | 3 |
| 5 | 0 |
它想要这样,以便我可以使用索引值删除相应的行:
| 1 | 1 |
| 2 | 0 |
| 3 | 0 |
| 4 | 3 |
| 5 | . |
我的做法正确吗?任何人都可以帮我解决这个问题吗?
非常感谢。
您可以尝试使用 str.match
如下:
df = df[df["sample"].str.match(r'[1-9]')]
这只会保留样本值以非零数字开头的行。
例如:在下面的“样本”列中,我需要删除第 2、3 和 5 列,因为它们要么在开头有一个前导零,要么在开头有一个特殊字符。
Index | Sample |
---|---|
1 | 12345 |
2 | 00152 |
3 | 09 |
4 | 325 |
5 | .1246 |
我尝试将“示例”列数据类型更改为字符串并像这样提取第一个字符:
t = df['Sample'].astype(str).str[0].astype(int)
但它给了我这个输出:
print(t)
| 1 | 1 |
| 2 | 1 |
| 3 | 9 |
| 4 | 3 |
| 5 | 0 |
它想要这样,以便我可以使用索引值删除相应的行:
| 1 | 1 |
| 2 | 0 |
| 3 | 0 |
| 4 | 3 |
| 5 | . |
我的做法正确吗?任何人都可以帮我解决这个问题吗? 非常感谢。
您可以尝试使用 str.match
如下:
df = df[df["sample"].str.match(r'[1-9]')]
这只会保留样本值以非零数字开头的行。