【问题标题】:Remove duplicates of pandas df删除 pandas df 的重复项
【发布时间】:2021-01-21 17:42:21
【问题描述】:

尝试使用 DataFrame.drop_duplicates 参数,但没有成功,因为没有删除重复项。

希望根据列“inc_id”删除。如果在该列中找到重复项,则应仅保留最后一行。

我的 df 是:

    inc_id  inc_cr_date
0   1049670 121
1   1049670 55
2   1049667 121
3   1049640 89
4   1049666 12
5   1049666 25

输出应该是:

    inc_id  inc_cr_date
0   1049670 55
1   1049667 121
2   1049640 89
3   1049666 25

代码是:

df = df.drop_duplicates(subset='inc_id', keep="last")

知道我在这里缺少什么吗?谢谢。

【问题讨论】:

标签: python pandas


【解决方案1】:

我认为你只是在寻找drop the original index

In [11]: df.drop_duplicates(subset='inc_id', keep="last").reset_index(drop=True)
Out[11]:
    inc_id  inc_cr_date
0  1049670           55
1  1049667          121
2  1049640           89
3  1049666           25

【讨论】:

  • 似乎不起作用,因为 df 继续重复。谢谢。
  • @Gonzalo 这是运行您示例中的代码!您的解决方案有什么问题?您能否在问题中包含示例中的“错误输出”?
  • @Gonzalo ,将其分配回df=df.drop_duplicates(subset='inc_id', keep="last").reset_index(drop=True)
  • @AndyHayden 我的错,它正在调整你。我正在寻找错误的输出(保存到 csvs..)谢谢。
【解决方案2】:

对于数据框 df,可以使用此代码删除重复的行。

df = pd.read_csv('./data/data-set.csv')
print(df['text'])

def clean_data(dataframe):
    # Drop duplicate rows
    dataframe.drop_duplicates(subset='text', inplace=True)

clean_data(df)
print(df['text'])

【讨论】:

    【解决方案3】:
    f.drop_duplicates(subset='inc_id', keep="last").reset_index(drop=True)
    

    【讨论】:

    • 您好,欢迎来到堆栈溢出。如果您可以edit 您的答案并对其进行一些扩展,并分享您的代码如何添加到先前的答案,并有助于回答原始问题,那就太棒了。 f.drop_duplicates(subset='inc_id', keep="last").reset_index(drop=True) 确实作为已接受答案的一部分出现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 2020-12-11
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多