我已导入CSV数据集,将其清理(例如删除重复项),然后尝试导出更新的CSV。但是,导出的CSV文件包含的数据与原始数据相同,而不是更新的DataFrame。
我已经尝试过df.to_csv('out.csv')
和df.to_csv(r'out.csv')
import pandas as pd
df = pd.read_csv('data.csv')
df.drop_duplicates()
df.to_csv(r'cleanedData.csv')
或
df.to_csv('cleanedData.csv')
有人可以发现我在做什么吗?
由于数据有100行,而25行是重复的,所以我希望剩下75行。在Jupyter笔记本中,重复项将从DataFrame中正确删除。但是,当我打开导出的实际CSV文件时,仍然有100行数据。
答案 0 :(得分:1)
您需要将inplace
参数设置为True
例如:
import pandas as pd
df = pd.read_csv('data.csv')
df.drop_duplicates(inplace=True)
答案 1 :(得分:1)
您还需要在drop_duplicates()中说inplace = True,否则它将返回一个新的DataFrame,保持原始状态不变。
答案 2 :(得分:1)
您应该添加 inplace 选项以将更改保留在原始DataFrame上
df.drop_duplicates(inplace=True)
答案 3 :(得分:1)
默认情况下,drop_duplicates()
方法返回一个新的DataFrame
,其中删除了重复的元素,因此在您的情况下,df
保持不变。您应该写:
df.drop_duplicates(inplace=True)
df.to_csv('cleanedData.csv')
另请参阅:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html
答案 4 :(得分:1)
df.drop_duplicates
返回重复数据删除的数据帧,则正确的格式为:
deduplicated_df = df.drop_duplicates()
对于另一面drop_duplicates()
,该标志直接用于修改数据框,如果要替换df,请将标志设置为True
df.drop_duplicates(inplace=True)