根据条件返回列名

2024-06-10 16:36:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含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)

Tags: 字符串代码indffordscol变体
1条回答
网友
1楼 · 发布于 2024-06-10 16:36:44

如果要返回列名称,则按^{}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')

相关问题 更多 >