我有一个包含100多列的DS,并且只需要返回包含此字符串'palm oil'
的行的列名。我已经看到了这个问题的一些变化,并尝试了所有可能的组合,但是不能帮助我返回包含感兴趣字符串的行的列名。有人可以帮忙吗?这是我的代码 -
str_cols = []
for col in df.select_dtypes([np.object]).columns[7:45]:
if df[col].str.lower().str.contains("palm", na=False):
str_cols.append(col)
print (str_cols)
答案 0 :(得分:2)
如果希望返回列名称按str.contains
和case=False
过滤列,则不区分大小写:
df = pd.DataFrame({'A':list('abcdef'),
'B':['palm oil',5,4,5,'palm oil 5',4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,'Palm oil',1,0],
'E':[5,3,6,9,2,'palm OIL'],
'F':list('aaabbb')}).astype(str)
print (df)
A B C D E F
0 a palm oil 7 1 5 a
1 b 5 8 3 3 a
2 c 4 9 5 6 a
3 d 5 4 Palm oil 9 b
4 e palm oil 5 2 1 2 b
5 f 4 3 0 palm OIL b
m = df.astype(str).apply(lambda x: x.str.contains("palm oil", case=False, na=False)).any()
c = df.columns[m]
print (c)
Index(['B', 'D', 'E'], dtype='object')