python - 提取和转换特定列中的值
问题描述
我有一个数据框 df,我想在其中找到某个模式,然后用新模式替换它。例如,任何包含:2X6.4T 的值都应替换为12T,但如果它包含“单词”WOW ,则不是
数据:
Type
AY12-AYY-AY-R800-900G-2X6.4T_18T-R6-v.A
AY12-AYY-AY-R800-900G-2X6.4T_18T-R6-v.A
AY12-AYY-AY-R800-900G-2X6.4T_18T-R6-v.A
AY12-AYY-AY-R800XD-900G-6.4T-R11-WOW-v.A
AY12-AYY-AY-R800XD-900G-6.4T-R11-WOW-v.A
期望:
Type
AY12-AYY-AY-R800-900G-12T_18T-R6-v.A
AY12-AYY-AY-R800-900G-12T_18T-R6-v.A
AY12-AYY-AY-R800-900G-12T_18T-R6-v.A
AY12-AYY-AY-R800XD-900G-6.4T-R11-WOW-v.A
AY12-AYY-AY-R800XD-900G-6.4T-R11-WOW-v.A
正在做:
df['Type'] = df['Type'].replace(['2X6.4T'],'12T')
但是,这会消除以下各项的全部值:AY12-AYY-AY-R800-900G-2X6.4T_18T-R6-vA,而不是搜索和替换。
任何建议表示赞赏,我仍在研究这个。
解决方案
请使用np.where(condition, string if condition is true, string if condition false)
。供选择使用.str,contains()
df['Type']=np.where(df['Type'].str.contains('2X6.4T')&~df['Type'].str.contains('WOW'),df['Type'].str.replace('2X6.4T','12T'),df['Type'])
print(df)
正如@TrentonMcKinney 所建议的,您也可以使用 df.where;
df['Type']=df.where(df['Type'].str.contains('WOW'),df['Type'].str.replace('2X6.4T','12T'), axis=0)
Type
0 AY12-AYY-AY-R800-900G-12T_18T-R6-v.A
1 AY12-AYY-AY-R800-900G-12T_18T-R6-v.A
2 AY12-AYY-AY-R800-900G-12T_18T-R6-v.A
3 AY12-AYY-AY-R800XD-900G-6.4T-R11-WOW-v.A
4 AY12-AYY-AY-R800XD-900G-6.4T-R11-WOW-v.A
推荐阅读
- angular - 无法在 iframe 中截屏
- ios - 我是否必须为我的应用程序和 widgetkit 扩展分别归档构建以与 TestFlight 共享?
- nvidia - 带有 MPMD(多程序和多数据)仿真的 Nsys Profile
- arduino - printf("%s",stringName) 打印错误的文本但只打印一次
- python - 如何计算按钮点击?
- elasticsearch - Elasticsearch - 统一来自不同索引的搜索结果
- javascript - Horizontal Scroll 2 divs together (想使用overflow-y : scroll in body & overflow-x: scroll outside body at Table)
- algorithm - 找到任意数字数组的最大值和第 k 个最大值的最小比较次数
- c# - 为什么 SelectList 在提交帖子时在模型中返回 Null 值?
- opengl - 无法让这个 shadertoy 着色器在 GLSL 和 OpenGL 2.0 中工作