使用 Python Pandas 从 CSV 文件中删除重复记录

问题描述 投票:0回答:4

我想使用 Python Pandas 从 csv 文件中删除重复记录 CSV 包含具有三个属性scale、minzoom、maxzoom 的记录。我想要一个带有 minzoom 和 maxzoom 的结果数据框,并且留下的记录是唯一的

输入 CSV 文件(lookup_scales.csv)

 Scale, minzoom, maxzoom
 2000, 0, 15
 3000, 0, 15
 10000, 8, 15
 20000, 8, 15
 200000, 15, 18
 250000, 15, 18

必需的distinct_lookup_scales.csv(无比例列)

minzoom, maxzoom
0,5
8,15
15,18 

到目前为止我的代码是

lookup_scales_df = pd.read_csv('C:/Marine/lookup/lookup_scales.csv', names = ['minzoom','maxzoom'])
lookup_scales_df = lookup_scales_df.set_index([2, 3])
file_name = "C:/Marine/lookup/distinct_lookup_scales.csv"
lookup_scales_df.groupby('minzoom', 'maxzoom').to_csv(file_name, sep=',')

非常感谢您的帮助。我是 pandas 的新手,正在使用 dataframe

python pandas csv grouping distinct-values
4个回答
5
投票

您不需要 numpy 或任何东西,您只需在一行中执行 unique-ify,同时使用 pandas 导入 csv:

import pandas as pd
df = pd.read_csv('lookup_scales.csv', usecols=['minzoom', 'maxzoom']).drop_duplicates(keep='first').reset_index()

输出:

   minzoom  maxzoom
0        0       15
1        8       15
2       15       18

然后将其写入 csv:

df.to_csv(file_name, index=False) # you don't need to set sep in this because to_csv makes it comma delimited.

所以整个代码:

import pandas as pd
df = pd.read_csv('lookup_scales.csv', usecols=['minzoom', 'maxzoom']).drop_duplicates(keep='first').reset_index()
file_name = "C:/Marine/lookup/distinct_lookup_scales.csv"
df.to_csv(file_name, index=False) # you don't need to set sep in this because to_csv makes it comma delimited.

3
投票

您可以使用

pd.read_csv()
pd.to_csv()
drop_duplicates()
:

import pandas as pd

df = pd.read_csv('test.csv', sep=', ', engine='python')

new_df = df[['minzoom','maxzoom']].drop_duplicates()

new_df.to_csv('out.csv', index=False)

输出到

out.csv

minzoom,maxzoom
0,15
8,15
15,18

阅读时请注意

sep=', '
test.csv
,否则如果保留默认值,您的列名称将包含前导空格
sep=','


0
投票

这是一个简单的 Python 脚本来执行此操作。您将使用 Pandas,这是一个强大的数据操作库。

import pandas as pd

# read CSV file
data = pd.read_csv('input.csv')

# remove duplicates based on 'email' column
cleaned_data = data.drop_duplicates(subset='email')

# save the cleaned data into a new CSV file
cleaned_data.to_csv('cleaned.csv', index=False)

0
投票

d_kennetz提供的答案是完全错误的。在保持其他列完好无损的同时执行此操作的正确方法是替换

h
:

df = pd.read_csv('yourcsvfilehere.csv').drop_duplicates('columnnamehere',keep='first')
© www.soinside.com 2019 - 2024. All rights reserved.