python - 如何遍历 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)。如果您能帮助我,我将非常感激。问候一月
解决方案
您可以使用 str.replace() 使用正则表达式批量修改字符串:
df2['Behandelcode'].str.replace(r'(?P<match>\d{6}).*', lambda x: x.group('match'))
此表达式将仅成功匹配至少 6 位数字并由不定数量的字符连续的值,并将其截断为仅前 6 位数字
推荐阅读
- jestjs - Jest + React-testing-library - 等待一个模拟的异步函数完成
- javascript - 如何按内存限制拆分数组?
- oracle-apex - 在 oracle apex 中应用格式掩码
- html - 使用带屏蔽的重定向允许全屏嵌入视频
- flutter - json数组页面id dart如何
- c - 如何在字符串反转中写单词?
- python - 如何将两个txt文件与python进行比较?
- flutter - 颤振 - xcode11 - macOS catalina - cocoapod 安装错误
- python - 用于 Python 的快速键值磁盘存储
- android - 如何在颤动中允许浮动通知和锁定屏幕通知编程