为了账号安全,请及时绑定邮箱和手机立即绑定

如何在整个 Pandas 数据框中搜索字符串并获取包含它的列的名称?

如何在整个 Pandas 数据框中搜索字符串并获取包含它的列的名称?

慕容3067478 2021-10-05 16:57:41
我想在包含给定字符串的数据帧(“类别”)中查找列的名称。categories    Groceries   Electricity Fastfood    Parking 0   SHOP        ELCOMPANY   MCDONALDS   park1   MARKET      ELECT       Subway      car2   market      electr      Restauran   247 假设我想在整个数据框中搜索字符串“MCDO”。答案应该是“快餐”。我尝试使用 str.contains 但它似乎不适用于数据帧。我怎样才能做到这一点?谢谢你。
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

如果您可以搜索整个字符串,那就更容易了,

(df == 'MCDONALDS').any().idxmax()

否则使用申请,

df.apply(lambda x: x.str.startswith('MCDO').any()).idxmax()


查看完整回答
反对 回复 2021-10-05
?
白衣非少年

TA贡献1155条经验 获得超0个赞

也可以for为此使用循环:


def strfinder(df, mystr):

    for col in df:

        for item in df[col]:

            if mystr in item:

                return col


print(strfinder(df, 'MCDO'))

要获取可能包含字符串的所有列,例如在下面修改后的数据框中:


    Groceries   Electricity  Fastfood    Parking 

0   SHOP        ELCOMPANY   MCDONALDS   park

1   MARKET      MCDON       Subway      car

2   market      electr      Restauran   247 

可以使用“列表理解”:


mystr = 'MCDO'

outlist = [ col 

            for col in df 

            for item in df[col]

            if mystr in item    ]

print(outlist)

输出:


['Electricity', 'Fastfood']


查看完整回答
反对 回复 2021-10-05
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

或使用:

print(df.apply(lambda x: x.str.contains('MCDO')).replace(False,np.nan).dropna(axis=1,how='all').columns.item())

输出:

Fastfood


查看完整回答
反对 回复 2021-10-05
  • 3 回答
  • 0 关注
  • 423 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信