python-3.x - 如何在python中对列名进行子串化
问题描述
我有一个名为“comment1abc”的列
我正在写一段代码,我想看看列是否包含某个字符串'abc'
df['col1'].str.contains('abc') == True
现在,我不想对“abc”进行硬编码,而是想对“comment1abc”列(准确地说,列名,而不是列值)使用类似子字符串的操作,以便从中获取“abc”部分。例如下面的代码做类似的工作
x = 'comment1abc'
x[8:11]
但是如何为列名实现它?我尝试了下面的代码,但它不起作用。
for col in ['comment1abc']:
df['col123'].str.contains('col.names[8:11]')
任何建议都会有所帮助。
示例数据框:
f = {'name': ['john', 'tom', None, 'rock', 'dick'], 'DoB': [None, '01/02/2012', '11/22/2014', '11/22/2014', '09/25/2016'], 'location': ['NY', 'NJ', 'PA', 'NY', None], 'code': ['abc1xtr', '778abc4', 'a2bcx98', None, 'ab786c3'], 'comment1abc': ['99', '99', '99', '99', '99'], 'comment2abc': ['99', '99', '99', '99', '99']}
df1 = pd.DataFrame(data = f)
和示例代码:
for col in ['comment1abc', 'comment2abc']:
df1[col][df1['code'].str.contains('col.names[8:11]') == True] = '1'
解决方案
我认为答案很简单:
for col in ['comment1abc', 'comment2abc']:
x = col[8:11]
df1[col][df1['code'].str.contains('x') == True] = '1'
尝试在 .str.contains() 中使用列名不是一个好主意。最好使用字符串。
推荐阅读
- javascript - 从 JS 更新时未检测到 Blazor 双向绑定
- java - 在选定元素的字符串上方带有提示的微调器
- c# - 带有实体框架的 SQLite:VS2013 中没有可用的 SQLite 数据提供程序
- python - 如何将对象转换为数组以将可变大小图像的输入提供给 keras 中的 cnn 模型
- vue.js - Vuepress theme in vue template
- javascript - Dropdown menu button doesn't close after click using angular5 and bootstrap4
- material-ui - Material UI : Form styling
- sql - 一般的 SQL 或特定的 SQL 风格是否有通用的代码约定?
- model - Yii2模型获取包含下划线的字段的方法
- javascript - Handle unreachable server when using Fetch API with react native