gpt4 book ai didi

python - 从 pandas 数据框中删除相似的行

转载 作者:行者123 更新时间:2023-12-01 08:40:06 24 4
gpt4 key购买 nike

数据科学新手,想要开展一个简单的项目(使用 Jupyter Notebook 和 Python 3.7)。基本上我想使用 NLP 来查找排名前 50 的美国电视节目中最常见的短语。然而,我遇到了障碍。我拥有的数据集将节目季节存储为单独的条目。例如,我有一些看起来像这样的东西:

  • 《南方公园》第 14 季
  • 《恶搞之家》第三季
  • 南方公园第 10 季
  • 《南方公园》第 11 季
  • 《南方公园》第 13 季
  • 《恶搞之家》第一季
  • 生活大爆炸第八季

我对前 50 位独特节目感兴趣。有没有办法过滤或删除 Pandas DataFrame 中的类似条目?可以保留第一个条目但删除所有其他条目的东西吗? (我计划收集每个节目中每一集的文字记录,因此电视节目的第一个实例并不重要,只要删除类似的条目以为其他独特条目腾出空间即可)。

我正在尝试找出会返回此值的东西(基于上面的示例):

  • 《南方公园》第 14 季
  • 《恶搞之家》第三季
  • 生活大爆炸第八季

不幸的是,我是个新手,不知道从哪里开始,无论是正则表达式、字符串切片等。

感谢您的帮助!

最佳答案

看起来您有一个标准的命名约定,因此您可以在此处使用正则表达式根据特定季节之前的文本删除重复项。

设置

df = pd.DataFrame({'show': {0: 'South Park Season 14',
1: 'Family Guy Season 3',
2: 'South Park Season 10',
3: 'South Park Season 11',
4: 'South Park Season 13',
5: 'Family Guy Season 1',
6: 'The Big Bang Theory Season 8'}})
<小时/>

str.extract + drop_duplicates:

df.loc[
df.show.str.extract(r'(.*)\s?Season').drop_duplicates().index
]

                           show
0 South Park Season 14
1 Family Guy Season 3
6 The Big Bang Theory Season 8

如果您只想要节目名称,而不是具体季节,则更简单:

 df.show.str.extract(r'(.*)\s?Season').drop_duplicates()

                     0
0 South Park
1 Family Guy
6 The Big Bang Theory

关于python - 从 pandas 数据框中删除相似的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53545173/

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