gpt4 book ai didi

python - 通过在另一列 pandas 中拆分逗号分隔的多个值来复制行

转载 作者:行者123 更新时间:2023-12-05 02:44:30 27 4
gpt4 key购买 nike

我从 NameError: name 'Series' is not defined 找到了应该工作的代码

但我收到错误消息“名称‘系列’未定义”。它在示例中运行良好,但其他用户也确实出现了此错误。有谁知道如何让它发挥作用?

如有任何帮助,我们将不胜感激!

original_df = DataFrame([{'country': 'a', 'title': 'title1'},
{'country': 'a,b,c', 'title': 'title2'},
{'country': 'd,e,f', 'title': 'title3'},
{'country': 'e', 'title': 'title4'}])

desired_df = DataFrame([{'country': 'a', 'title': 'title1'},
{'country': 'a', 'title': 'title2'},
{'country': 'b', 'title': 'title2'},
{'country': 'c', 'title': 'title2'},
{'country': 'd', 'title': 'title3'},
{'country': 'e', 'title': 'title3'},
{'country': 'f', 'title': 'title3'},
{'country': 'e', 'title': 'title4'}])

#Code I used:
desired_df = pd.concat(
[
Series(row["title"], row["country"].split(","))
for _, row in original_df.iterrows()
]
).reset_index()

最佳答案

首先用逗号拆分列以得到一个列表,然后您可以分解那一系列列表。将 'title' 移动到索引中,以便为 'country' 中的每个元素重复它。最后两部分只是清理名称并从索引中删除标题。

(df.set_index('title')['country']
.str.split(',')
.explode()
.rename('country')
.reset_index())

    title country
0 title1 a
1 title2 a
2 title2 b
3 title2 c
4 title3 d
5 title3 e
6 title3 f
7 title4 e


此外,您的原始代码在逻辑上没有问题,但您需要正确创建您的对象。我建议导入模块而不是单独的类/方法,因此您使用 pd.Series 而不是 Series

创建 Series
import pandas as pd

desired_df = pd.concat([pd.Series(row['title'], row['country'].split(','))
for _, row in original_df.iterrows()]).reset_index()

关于python - 通过在另一列 pandas 中拆分逗号分隔的多个值来复制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66450416/

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