gpt4 book ai didi

python - Pandas :应用生成列表的操作不可调用

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:01 26 4
gpt4 key购买 nike

我有一个大型 DataFrame,它看起来包含一个游戏名称列表,其中通常包含它们的控制台。

    title
1 Nier Automata (ps4)
2 Halo 5 Xbox One

我想自动将它分配给一个新列,类别,其中包含控制台的名称。

      title               category
1 Nier Automata (PS4) PS4
2 Halo 5 Xbox One Xbox One

我认为这非常适合 .apply 操作并编写了以下代码:

console_list = ['PS4', 'Xbox One', 'PC', 'PS3', 'PS2', 'Xbox 360', '3DS']
df['category'] = df['title'].apply(lambda x: y for y in console_list if y in x)

它抛出以下错误:

  File "scraper.py", line 153, in <module>
df['auto_categorie'] = df['titel'].apply(lambda x: y for y in console_list if y in x)
File "/venv/lib/python3.6/site-packages/pandas/core/series.py", line 2551, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas/_libs/src/inference.pyx", line 1521, in pandas._libs.lib.map_infer
TypeError: 'generator' object is not callable

但是我虽然不是在调用列表对象本身,而是在调用它的内容 (y),但有人知道我做错了什么吗?

最佳答案

看来你需要list comprehension:

df['category'] = df['title'].apply(lambda x: list([y for y in console_list if y in x]))

另一种解决方案 str.findall :

df['category'] = df['title'].str.findall('|'.join(console_list))
print (df)
title category
1 Nier Automata (PS4) [PS4]
2 Halo 5 Xbox One [Xbox One]

关于python - Pandas :应用生成列表的操作不可调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48111324/

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