我在pandas数据框df
中有列
import pandas as pd
s = {'id': [47035,460,23045,87068,8007,78096],
'st': ['a', 'a', 'd', 'e', 'f', 'a']}
df = pd.DataFrame(s)
我想删除仅位于列id
中第三位置的0(或其他任何数字,如果存在)。我该怎么做?
因此,删除后,我在ID列中的值应变为4735、46、2345、8768、807、7896。
答案 0 :(得分:4)
按如下方式使用str.slice_replace
:
df.id.astype(str).str.slice_replace(2, 3, '')
Out[422]:
0 4735
1 46
2 2345
3 8768
4 807
5 7896
Name: id, dtype: object
答案 1 :(得分:1)
一种选择是将它们转换为字符串并删除第三个字符,然后转换回int:
CreateOrUpdateBloodSugarLevel(int userId, DateTime measureDate, int bloodSugarLevel)
答案 2 :(得分:1)
IIUC
s = {'id': [47035,460,23045,87068,8007,78096],
'st': ['a', 'a', 'd', 'e', 'f', 'a']}
df = pd.DataFrame(s)
# convert to sting and strip away the middle third character then concat
df['id'] = (df['id'].astype(str).str[:2] + df['id'].astype(str).str[3:]).astype(int)
id st
0 4735 a
1 46 a
2 2345 d
3 8768 e
4 807 f
5 7896 a
答案 3 :(得分:1)
此解决方案也适用:
df['id'].astype(str).str.replace(r"^(?P<one>..).", lambda x: x.group("one") )
编辑:名为“一个”的组将拾取前两个整数,并将其保留在最终替换中,尽管会删除第三个整数。