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

根据一列列表访问数据框的行。如果列表中存在唯一字符串,则将查看该行

根据一列列表访问数据框的行。如果列表中存在唯一字符串,则将查看该行

扬帆大鱼 2022-07-19 17:05:57
这很难解释,所以我无法用谷歌搜索我的问题。我有一个数据框。该数据框的一列包含列表。每行都有一个字符串列表。列表大小不一。有些行没有列表,但有一个 NaN 值。我希望能够查看列表中包含任意字符串的数据框行。因此,如果我想查找列表中包含“arbitrary_string”作为列表元素的所有行,则将选择这些行。我想使用术语“corndog”来返回第 1 行和第 2 行的视图。字符串列表中的位置无关紧要。我的同事建议我尝试将 lambdas 和 apply 以及一个特殊函数一起使用。他们的例子对我不起作用。他们提议:def find_id(inpList:list,inpstr):      print(inpList)    for x in inpList:        if inpstr in x:            return(1)    return(0)Df[list_of_strings].apply(lambda x: find_id(x, cust string))我不确定我在做什么。我不明白这些东西是如何拼凑在一起的。
查看完整描述

1 回答

?
有只小跳蛙

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

IIUC,我认为你可以使用这个:


原始df:


+----+-----------+--------------+----------------------------+

|    | some_int  | some_string  |      List_of_strings       |

+----+-----------+--------------+----------------------------+

| 0  |       84  | something    | [‘cat’,’dog’,’corndog’]    |

| 1  |       74  | etc          | [‘qwetry’,’celphone’]      |

| 2  |       64  | etc          | [‘dog’,corndog’]           |

| 3  |       89  | etc          | [‘etc’,’catfish’,’purple’] |

+----+-----------+--------------+----------------------------+


df[df['List_of_strings'].str.contains('corndog')]

输出:



    some_int    some_string  List_of_strings

0   84          something   [‘cat’,’dog’,’corndog’]

2   64              etc     [‘dog’,corndog’]

编辑 考虑到列值是列表类型而不是字符串,您可以使用以下内容:


df[df['List_of_strings'].apply(lambda x: 'corndog' in x)]


查看完整回答
反对 回复 2022-07-19
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号