【问题标题】:python pandas avoiding dupulicated csv output [duplicate]python pandas避免重复的csv输出[重复]
【发布时间】:2021-11-23 14:59:42
【问题描述】:

我正在使用 python,但是我遇到了问题。

理想情况下,我希望没有重复,但如果我制作一个 csv 文件,则会输出相同的单词。 如何避免重复? 我是编程初学者,所以请对我温柔一点。 谢谢。

enter image description here

这是我的代码。

import requests
from bs4 import BeautifulSoup
import pandas as pd
from tqdm import tqdm
from csv import writer

all_data = []
meanings = []
words = []

while True:

    spell = input("spell: ")
    r = requests.get(
        "http://www.urbandictionary.com/define.php?term={}".format(spell))
    r.encoding = r.apparent_encoding
    data = BeautifulSoup(r.content, features="lxml")
    explanation_list = data.find("div", attrs={"class": "meaning"})
    explanation_list = explanation_list.get_text()
    print(explanation_list)
    
    meanings.append(explanation_list)
    words.append(spell)
    all_data = ({'words': words, 'meanings': meanings})

    df = pd.DataFrame(data=all_data)
    filepath = 'C:/Users/dict1.csv'
    df.to_csv(filepath, mode='a', index=False, header=None)

【问题讨论】:

  • while 循环中,将单词附加到words 列表中,然后在将DataFrame 保存到csv 文件时使用mode='a' (=append)。您可能想要更改两者中的任何一个。
  • 那么,我该怎么做呢?如果我将 mode='a' 更改为 mode ='w',显然没有重复,但问题是我想在每次运行代码时附加 all_data。 @marcel

标签: python excel pandas csv beautifulsoup


【解决方案1】:

当您使用创建数据框时,

df = pd.DataFrame(data=all_data)

可以通过使用,检查数据框中是否有重复,

df.duplicated()

如果有重复,你可以使用删除它们

df.drop_duplicates(subset=['name1','name2'])

【讨论】:

  • 我认为问题是由最后一行df.to_csv引起的。
  • ``` df = pd.DataFrame(data=all_data) df.duplicated() df.drop_duplicates(subset=['words','meanings']) filepath = 'C:/Users/ dict1.csv' df.to_csv(filepath, mode='w', index=False, header=None) ```上面的代码我做了,但我不会改。
  • 试试 header=False 或者如果你得到任何错误,你能粘贴你得到的错误吗?
猜你喜欢
  • 1970-01-01
  • 2013-10-08
  • 2018-09-18
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 2017-02-12
  • 2018-05-25
  • 1970-01-01
相关资源
最近更新 更多