簡體   English   中英

我需要幫助將 1 個 csv 文件和 1 個 pandas 數據框連接在一起而沒有重復

[英]I need help concatenating 1 csv file and 1 pandas dataframe together without duplicates

我的代碼目前如下所示:

df1 = pd.DataFrame(statsTableList)
df2 = pd.read_csv('StatTracker.csv')
result = pd.concat([df1,df2]).drop_duplicates().reset_index(drop=True)

我得到一個錯誤,我不知道為什么。

我的程序的目標是從 API 中提取數據,然后將其全部寫入文件進行分析。 df1 可以說是作為第一個版本寫入 csv 文件的前 100 個游戲。 df2 是我第二次讀回前 100 場比賽並將其與 df1(新數據,接下來的 100 場比賽)進行比較,以檢查重復項並刪除它們。

不工作的部分是 drop duplicates 部分。 它給了我一個不可哈希列表的錯誤,我認為這是因為它的兩個數據框是字典列表。 目標是提取 100 場比賽的數據,然后再拉下 50 場,但如果我再次拉出 100 號,則刪除那個,只需添加 101-150,然后將其全部添加到我的 csv 文件中。 然后,如果我再次運行它,拉 150-200,但如果它是重復的,則丟棄 150,等等。

根據您的解釋,您可以使用這一行來查找 df1 中的唯一值:

df_diff = df1[~df1.apply(tuple,1)\
            .isin(df2.apply(tuple,1))]

此代碼檢查行是否存在於另一個數據框中。 為了進行比較,它將每一行轉換為元組(沿 1(行)軸應用元組轉換)。

這個解決方案確實很慢,因為它會將 df1 中的每一行與 df2 中的所有行進行比較。 所以它的時間復雜度為 n^2。

如果您想要更優化的版本,請嘗試使用 pandas 內置的 compare 方法

df1.compare(df2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM