我有一个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
。有人可以帮忙吗?
答案 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)
然后,同样的约定适用于其他数据框方法,例如sort
,fill_na
等。我想这是个人品味的问题,无论你是使用这种语法,还是更多" functional"
df_dedup = df.drop_duplicates()
虽然默认行为(inplace=False
)确实倾向于我通常使用的行为。