我有一个名为'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'
答案 0 :(得分:0)
我认为答案很简单:
for col in ['comment1abc', 'comment2abc']:
x = col[8:11]
df1[col][df1['code'].str.contains('x') == True] = '1'
尝试在.str.contains()中使用列名称并不是一个好主意。最好使用字符串。