熊猫删除重复项不会删除最后一个重复项

时间:2021-06-26 10:39:36

标签: python pandas dataframe csv duplicates

设置 keep=False 应该删除所有重复项,但如果我运行我的函数仍然返回前一行的重复项

def date_to_csv():
   import pandas as pd
   from random import randint
   df = pd.read_csv("test.csv")
   df = df.append({'Date': datetime.date.today(), 'Price': randint(1,100)}, ignore_index=True)
   result_df = df.drop_duplicates(keep=False)
   result_df.to_csv('test.csv', mode='a', index=False, header=None)

如果我的 csv 文件是空的,只有列标题“日期”和“价格”,并且我运行我的函数 3 次,它会在 csv 中返回这个:

Date,Price
2021-06-26,74
2021-06-26,74
2021-06-26,51
2021-06-26,51
2021-06-26,13

当我期望它返回这样的东西时:

Date,Price
2021-06-26,74
2021-06-26,51
2021-06-26,13

1 个答案:

答案 0 :(得分:2)

由于 mode='a',您无法在多次执行您的函数后删除以前的重复项。这是您预期行为的代码:

import pandas as pd
from datetime import datetime


def date_to_csv(): 
     df = pd.read_csv('test.csv') 
     df = df.append({'Date': str(datetime.now().date()), 'Price': randint(1, 100)}, ignore_index=True) 
     df.to_csv('test.csv', index=False)