gpt4 book ai didi

python - 仅将列表中的项目保留在包含某些字符的数据框中

转载 作者:行者123 更新时间:2023-12-01 02:41:05 26 4
gpt4 key购买 nike

我有一个 df,其中一列包含字符串列表,如下所示:

    'Name'     'Method'
1 foo ['car', 'truck', 'transportation::plane']
2 bar ['car', 'transportation::helicopter', 'boat']
3 baz ['transportation::car', 'helicopter', 'boat']

我只想将列表中的项目保留在包含“::”的方法下,以便得到如下所示的内容:

    'Name'     'Method'
1 foo ['transportation::plane']
2 bar ['transportation::helicopter']
3 baz ['transportation::car']

我知道我可以创建一个 for 循环来迭代每个列表,然后使用列表理解,但我觉得必须有一种不涉及使用 for 循环的方法。我尝试了以下方法

for j in range(len(df['Method'])):
df['Method'].iloc[j] = [x for x in df['Method'].iloc[j] if "::" in x]

运行时间比我想要的要长得多。

最佳答案

使用应用

In [220]: df.Method.apply(lambda x: [v for v in x if '::' in v])
Out[220]:
1 [transportation::plane]
2 [transportation::helicopter]
3 [transportation::car]

详情

In [222]: df['NMethod'] = df.Method.apply(lambda x: [v for v in x if '::' in v])

In [223]: df
Out[223]:
Name Method NMethod
1 foo [car, truck, transportation::plane] [transportation::plane]
2 bar [car, transportation::helicopter, boat] [transportation::helicopter]
3 baz [transportation::car, helicopter, boat] [transportation::car]

或者,使用过滤器

In [225]: df.Method.apply(lambda x: filter(lambda v: '::' in v, x))
Out[225]:
1 [transportation::plane]
2 [transportation::helicopter]
3 [transportation::car]
Name: Method, dtype: object

关于python - 仅将列表中的项目保留在包含某些字符的数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com