Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python从CSV文件中删除重复记录_Python_Pandas_Csv_Grouping_Distinct Values - Fatal编程技术网

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

使用Python从CSV文件中删除重复记录,python,pandas,csv,grouping,distinct-values,Python,Pandas,Csv,Grouping,Distinct Values,我想使用Python从csv文件中删除重复记录 CSV包含具有缩放、最小缩放和最大缩放三个属性的记录。我希望得到一个带有minzoom和maxzoom的结果数据帧,并且记录保持唯一 i、 e 输入CSV文件查找\u scales.CSV Scale, minzoom, maxzoom 2000, 0, 15 3000, 0, 15 10000, 8, 15 20000, 8, 15 200000, 15, 18 250000, 15, 18 所需的不同\u查找\u scales.

我想使用Python从csv文件中删除重复记录 CSV包含具有缩放、最小缩放和最大缩放三个属性的记录。我希望得到一个带有minzoom和maxzoom的结果数据帧,并且记录保持唯一

i、 e

输入CSV文件查找\u scales.CSV

 Scale, minzoom, maxzoom
 2000, 0, 15
 3000, 0, 15
 10000, 8, 15
 20000, 8, 15
 200000, 15, 18
 250000, 15, 18
所需的不同\u查找\u 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

您可以使用pd.read\u csv、pd.to\u csv和drop\u重复项:

输出到out.csv:

请注意,当读取test.csv时,sep=',否则,如果保留默认sep=',则您的列名将包含一个前导空格。

您可以使用pd.read\u csv、pd.to\u csv并删除重复项:

输出到out.csv:


请注意,在读取test.csv时,sep=','如果保留默认sep=','则您的列名将包含一个前导空格。

您不需要numpy或任何东西,只需在一行中执行唯一的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.

您不需要numpy或其他任何东西,只需在一行中完成唯一的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.

d_kennetz提供的答案完全错误。。在保持其他色谱柱完整性的同时,正确的方法是更换h

#df = pd.read_csv('yourcsvfilehere.csv').drop_duplicates('columnnamehere',keep='first')

d_kennetz提供的答案完全错误。。在保持其他色谱柱完整性的同时,正确的方法是更换h

#df = pd.read_csv('yourcsvfilehere.csv').drop_duplicates('columnnamehere',keep='first')


为什么不只是np.uniquedf['minzoom','maxzoom']你好,谢谢。np是numpy吗?。原谅我,我是python新手。DaveIt不太清楚你想通过groupby实现什么。如果你只是想删除副本,请使用numpy。python中的大多数人都将numpy作为np导入,因此当调用numpy模块时,它就是np.moduleThanks d_kennetz。我能像上面那样将过滤后的数据帧保存到新的csv吗?为什么不只是np.uniquedf['minzoom','maxzoom']嗨,谢谢。np是numpy吗?。原谅我,我是python新手。DaveIt不太清楚你想通过groupby实现什么。如果你只是想删除副本,请使用numpy。python中的大多数人都将numpy作为np导入,因此当调用numpy模块时,它就是np.moduleThanks d_kennetz。我能像上面那样将过滤后的数据帧保存到新的csv吗?非常感谢d_kennetz。!这正是我所希望的。在这件事上浪费了很多时间。我欠你一个人情!没问题@daveb,很乐意帮忙!这似乎对有序CSV有效,但如果不起作用,则会失败。“在这种情况下应该用什么?”克里斯托弗·维达尔我不知道你所说的命令是什么意思。这会删除完全相同的行,只保留重复的第一行。@d_kennetz我的错,我误读了这个问题。这实际上是有效的,因为“比例”列已消失。我的用例是基于2列消除csv的重复,同时保留第三列Id列,如scale one-在这种情况下,这不起作用。。。但是这也是另一个问题非常感谢你d_kennetz。!这正是我所希望的。在这件事上浪费了很多时间。我欠你一个人情!没问题@daveb,很乐意帮忙!这似乎对有序CSV有效,但如果不起作用,则会失败。“在这种情况下应该用什么?”克里斯托弗·维达尔我不知道你所说的命令是什么意思。这会删除完全相同的行,只保留重复的第一行。@d_kennetz我的错,我误读了这个问题。这实际上是有效的,因为“比例”列已消失。我的用例是基于2列消除csv的重复,同时保留第三列Id列,如scale one-在这种情况下,这不起作用。。。但是这也是另一个问题感谢rahlf23这也正是我所希望的结果。衷心感谢。我真的很欣赏diff的方法。DaveThanks rahlf23这也正是我所希望的结果。衷心感谢。我真的很欣赏diff的方法。戴夫