python - 熊猫数据框替换特定位置的字符,而不更改其他位置的相似字符
问题描述
数据框中有一列(‘A’)
长度为 3 到 8。对于长度为 6 的列,如果 O 位于字符串的第 2、第 4 或第 6 个字符中,我需要将 O 替换为 0(零)。例如:
OOMOOO to O0M0O0
O4MOP8 to O4M0P8
H4M2SO to H4M2S0
以下代码仅适用于第 6 个字符:(长度为 6 时的最后一个字符)
df['A'] = df[(df['A'].str.len() == 6)]['A'].str.replace('O$', '0')
知道如何在第 2 和第 4 位置实现这一目标吗?
解决方案
您可以使用 apply 尝试这样的事情:
def replace_chars(x):
return "".join(["0" if chr == "O" and ind%2 ==0 else chr for ind, chr in enumerate(x)])
m = df['A'].str.len() == 6
df.loc[m, 'A'] = df.loc[m, 'A'].apply(replace_chars)
编辑:更改赋值语法以避免链接,感谢 jezrael
推荐阅读
- windows - 病原体只加载一些插件
- swift - Xcode 9 项目不再使用 Xcode 10.1 编译,抱怨初始化程序。如何进行故障排除?
- javascript - 如何在反应组件中为内部函数声明一个变量?
- python - 从列表中减去日期并从列表列表中减去每一行
- json - 基于元素重新格式化分层数据的输出
- swift - 自定义键盘使应用程序崩溃 - Swift
- autodesk-viewer - 在 Forge Viewer 中显示设计自动化 API 的输出
- jquery - Mysql order by 和 group by 查询
- php - 如何使用php标签在php标签内回显动态数据
- sparklyr - 选择数据集中的某些值并更改它们的值