Python 在数据框的每一行中搜索一个字符串,并返回找到的列名

Python 在数据框的每一行中搜索一个字符串,并返回找到的列名,python,pandas,Python,Pandas,是否有方法在数据框中查找字符串并在匹配时返回列名 在下面的示例中,我尝试查找出现“SRC”的列,不确定是否已关闭,但它返回所有列名,而不仅仅是相关列名。我肯定我在做傻事 df = pd.DataFrame({'col1':['foo SRC','bar','baz'], 'col2':['foo','bar','baz'],'col3':['SRC','bar','SRC'], 'col4':['SRC','SRC','SRC']}) df['col_lis

是否有方法在数据框中查找字符串并在匹配时返回列名

在下面的示例中,我尝试查找出现“SRC”的列,不确定是否已关闭,但它返回所有列名,而不仅仅是相关列名。我肯定我在做傻事

df = pd.DataFrame({'col1':['foo SRC','bar','baz'], 'col2':['foo','bar','baz'],'col3':['SRC','bar','SRC'],
                  'col4':['SRC','SRC','SRC']})

df['col_list']= '/'.join(df.apply(lambda x : x.str.contains('SRC')).any().loc[lambda x : x].index)


Actual Result:
---------------------------------------------
col1    |col2   |col3   |col4   |col_list
--------|-------|-------|-------|----------------
foo SRC |foo    |SRC    |SRC    |col1/col3/col4
bar     |bar    |bar    |SRC    |col1/col3/col4
baz     |baz    |SRC    |SRC    |col1/col3/col4

Expected:

col1    |col2   |col3   |col4   |col_list
--------|-------|-------|-------|----------------
foo SRC |foo    |SRC    |SRC    |col1/col3/col4
bar     |bar    |bar    |SRC    |col4
baz     |baz    |SRC    |SRC    |col3/col4 
用于:

或使用和
df.dot

df['col_list']=df.apply(lambda x: 
                  x.str.contains('SRC',na=False)).dot(df.columns + '/').str[:-1]
print(df)


谢谢很快:)总是很高兴看到
dot
solution:)+1
df['col_list']=df.apply(lambda x: 
                  x.str.contains('SRC',na=False)).dot(df.columns + '/').str[:-1]
print(df)
      col1 col2 col3 col4        col_list
0  foo SRC  foo  SRC  SRC  col1/col3/col4
1      bar  bar  bar  SRC            col4
2      baz  baz  SRC  SRC       col3/col4