如何在使用pandas从CSV读取数据时忽略具有相同索引的多个条目

时间:2015-08-04 22:58:40

标签: python csv pandas

我有一个csv文件,如下所示:

SELECT Count([PriKey]) FROM tblYourTable WHERE Len([TextColumn])>1

第一列(即patient_id)是索引,您可以看到同一患者有多个条目。我希望我的代码在使用patient_id, age_in_years, CENSUS_REGION, URBAN_RURAL_STATUS, YEAR 11511, 7, Northeast, Urban, 2011 9882613, 73, South, Urban, 2011 32190339, 49, West, Urban, 2011 32190339, 49, West, Urban, 2011 32190339, 49, West, Urban, 2011 32190339, 49, West, Urban, 2011 32190339, 49, West, Urban, 2011 32190339, 49, West, Urban, 2011 ... 导入数据时忽略这些多个条目,但我不知道该怎么做。我目前正在使用以下代码:

pandas

在代码中我还有一个函数:

df = pd.read_csv(filename, index_col = 0)
df.drop_duplicates()

当我调用此函数并使用def URSTATUS_to_numeric(a): if a == 'Urban': return 0 if a == 'Rural': return 1 if a == 'NULL': return 2 打印时,这就是我得到的:

df.drop_duplicates()

基本上,考虑到df['URSTATUS_num'] = df['URBAN_RURAL_STATUS'].apply(URSTATUS_to_numeric) print(df.drop_duplicates(['URSTATUS_num'])) >>> patient_id URSTATUS_num 11511 0 129126475 1 151269094 NaN 列作为参考,它会删除重复项。但是,我希望代码在执行URSTATUS_num操作时始终引用patient_id。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

我不相信你可以在阅读时忽略它们,但一旦阅读完毕,你可以使用drop_duplicates轻松删除它们。

df = pd.read_csv(filename, index_col = 0)
>>> df.drop_duplicates()
   patient_id  age_in_years CENSUS_REGION URBAN_RURAL_STATUS  YEAR
0       11511             7     Northeast              Urban  2011
1     9882613            73         South              Urban  2011
2    32190339            49          West              Urban  2011

编辑:

你可能只想打电话一次,例如

df = pd.read_csv(filename, index_col = 0).drop_duplicates()

根据基础数据的清洁度,您可能首先需要预处理以去除空格等。

答案 1 :(得分:1)

您可以拨打drop_duplcates"到位"与

df.drop_duplicates(inplace=True)

然后,同样的约定适用于其他数据框方法,例如sortfill_na等。我想这是个人品味的问题,无论你是使用这种语法,还是更多" functional"

df_dedup = df.drop_duplicates()

虽然默认行为(inplace=False)确实倾向于我通常使用的行为。