python - 如果找到,Pandas 检查列中 x 的子字符串,将字符串添加到 x
问题描述
我的数据框每个字符串最多有 2 个变体,例如,如果字符串是“USD”,那么有时还会出现另一个带有“LDUSD”的条目......没有“LD”的条目总是存在。
我需要应用 x[0:2]+'_'+x[2:] 但仅当列包含 x[2:] 的完全匹配时。
必须这样做以确保更改仅发生在相关条目上,因为还有各种项目在其默认名称中包含“LD”,例如(“EGLD”、“LDO”、“SLD”)或包含当前 x 字符串,例如('TUSD','USDT')。
df['Asset'] = df['Asset'].apply(lambda x: x[0:2]+'_'+x[2:] if x[2:] in df['Asset'] else x)
... in ...之后的部分不起作用,我不知道下一步如何进行。如何检查列 ['Asset'] 是否与 x[2:] 完全匹配?
抱歉标题我真的不知道该怎么称呼这个...
编辑大约 400 个示例:
df['Asset'] = ['1INCH','AAVE','ADA','ALGO','EGLD','DASH','LDO','TUSD','USDT','LD1INCH','LDALGO','LDEGLD','LDDASH','LDLDO','LDTUSD','LDUSDT',]
我需要的:
df['Asset'] = ['1INCH','AAVE','ADA','ALGO','EGLD','DASH','LDO','TUSD','USDT','LD_1INCH','LD_ALGO','LD_EGLD','LD_DASH','LD_LDO','LD_TUSD','LD_USDT',]
解决方案
您可以使用str.contains()
来测试是否any()
匹配rf'^{x[2:]}$'
:
df['Asset'] = df['Asset'].apply(lambda x: x[:2]+'_'+x[2:]
if df['Asset'].str.contains(rf'^{x[2:]}$', regex=True).any() else x)
对于正则表达式,添加r
以使其成为原始字符串。在这种情况下,我们还添加了,所以我们可以通过f-stringf
进行插值:x[2:]
^
- 字符串的开头{x[2:]}
x[2:]
-在 f 字符串内插值$
- 字符串结束
推荐阅读
- ramda.js - 通过管道传递多个参数和最后一个函数的结果
- python - 如何从 Python 中的目录中获取文件?
- python - 使用 matplotlib 在 Python 中绘制热图
- node.js - 如何从通过 AWS API 以字符串格式传入的多部分/表单数据中提取 FROM、TO、SUBJECT、BODY、ATTACHMENT 字段(包含 \n\r)
- java - Eclipse e4 应用程序 - 包含在插件中时找不到 ContextFactory
- c# - 如何将特定的字典条目添加到 Linq 表达式?
- node.js - 如何为 cube.js 动态生成模式?
- c# - 如何在 asp.net/webforms c# 中动态创建运行时控件?
- c - 在 C 中删除结构问题的元素数组
- c++ - c++ Excel COM自动化:查询服务器状态