熊猫用列表过滤行

时间:2021-04-04 16:50:11

标签: pandas

我在熊猫数据框中有一列是字符串,例如:

df['hello'].iloc[0] = '['hi','how','are','you']'

我只想保留带有“你”这个词的行,但在“如何”之后。 类似这样的条件:

'you' in ['hi','how','are','you'].split('how')[1] > 保持行

我试过了:

filtered = df[df['hello'].map(ast.literal_eval).apply(lambda x: 'you' in x)] 

但它只和你一起过滤行,而不是在“如何”之后。 如何添加此条件?

1 个答案:

答案 0 :(得分:0)

您可以使用 .str.contains 中的正则表达式检查它,匹配字符串,其中 'how' 后跟任何字符,然后后跟 'you'

df = pd.DataFrame({'hello': [
    "['hi','how','are','you']",
    "['you','are','how']",
]})

filtered = df.loc[df['hello'].str.contains("'how'.*'you'")]
filtered

输出:

                      hello
0  ['hi','how','are','you']