首页 > 解决方案 > 如何遍历 Pandas Dataframe 列以更改一些 15K 值(该列中字符串末尾的弹出字母)

问题描述

我有一个 df 18 列和 15K 行。

df.info() 给出第一列:

'''

0   Behandelcode                17451 non-null  object

''' 将列 'Behandelcode' 中的所有值转换为整数失败,因为某些字符串末尾有一个字母,例如:'''

(405, '33971'),
 (406, '38154'),
 (407, '033620A'),
 (408, '33971'),

''' 每一个字符串结尾有一个字母,字符串的长度就是7。

我已经尝试了太久了。所以我再次需要你的帮助。

问题是:我如何遍历列:df2['Behandelcode'],以便所有值都保留在原位,但是(例如)索引行 407 上的 0336620A 中的 A 被删除并且仅;0336620 保持在原位。这适用于所有以字母结尾的值。

我试过这个,没用....(我做了我,值,因为 df['Behandelcode'] 给出了一个系列。

'''

for i, value in enumerate(df2['Behandelcode']):
y = len(value)
if y == 7:
    value[:-1]
else:
    value = value

''' 也许有比使用 len 更安全/更干净的 python 方法。现在,首先要做的是清理此列,以便我可以将其设置为 type(int32)。如果您能帮助我,我将非常感激。问候一月

标签: pythonpandas

解决方案


您可以使用 str.replace() 使用正则表达式批量修改字符串:

df2['Behandelcode'].str.replace(r'(?P<match>\d{6}).*', lambda x: x.group('match'))

此表达式将仅成功匹配至少 6 位数字并由不定数量的字符连续的值,并将其截断为仅前 6 位数字


推荐阅读