Pandas 删除重复项不会删除最后一个重复项
Pandas dropping duplicates doesn't drop last duplicate
设置 keep=False 应该删除所有重复项,但如果我 运行 我的函数仍然是 return 上一行的副本
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 文件是空的,只有列 headers 'Date' 和 'Price' 并且我 运行 我的函数是它的 3 倍 returns 这个在 csv 中:
Date,Price
2021-06-26,74
2021-06-26,74
2021-06-26,51
2021-06-26,51
2021-06-26,13
当我期望它 return 像这样:
Date,Price
2021-06-26,74
2021-06-26,51
2021-06-26,13
由于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)
设置 keep=False 应该删除所有重复项,但如果我 运行 我的函数仍然是 return 上一行的副本
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 文件是空的,只有列 headers 'Date' 和 'Price' 并且我 运行 我的函数是它的 3 倍 returns 这个在 csv 中:
Date,Price
2021-06-26,74
2021-06-26,74
2021-06-26,51
2021-06-26,51
2021-06-26,13
当我期望它 return 像这样:
Date,Price
2021-06-26,74
2021-06-26,51
2021-06-26,13
由于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)