设置 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
答案 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)