我有一个csv文件,其中包含100+列/ 800,000 +行,数据的范围从2016年第四季度到2019年第二季度。其中三列是“参考ID”,“年份”和“季度”。
“参考ID”是指一个独特的人的数字。 “年份”列中的每一行都是2016-2019年的单个值。 “季度”列中的每一行都是1-4中的单个值。
对于每年的每个季度,我想删除包含相同参考ID的行,并返回一个新的数据框。只要ID每年每个季度只出现一次,那么被删除的行是否是ID的第一个/最后一个实例都没有关系。
我尝试使用嵌套的for循环,但是我的代码无效。
import pandas as pd
df = read_excel(filename.xlsx)
for year in df["Year"].unique():
for quarter in df["Quarter"].unique():
df.drop_duplicates(subset=["Reference ID"], inplace=True)
编辑: 我尝试使用Sid提到的方法,但是似乎我仍然缺少一个难题。我使用len()检查数据帧是否正确连接。
print(len(df))
df1 = df.loc[df['Quarter'] == 1]
df1.drop_duplicates(['Year','Reference ID'], inplace=True)
df2 = df.loc[df['Quarter'] == 2]
df2.drop_duplicates(['Year','Reference ID'], inplace=True)
df3 = df.loc[df['Quarter'] == 3]
df3.drop_duplicates(['Year','Reference ID'], inplace=True)
df4 = df.loc[df['Quarter'] == 4]
df4.drop_duplicates(['Year','Reference ID'], inplace=True)
print(len(df1) + len(df2) + len(df3) + len(df4))
dfcombine = pd.concat([df1, df2, df3, df4])
print(len(dfcombine))
上述代码确实删除了重复的参考ID,但未考虑该行的年份和/或季度。
谢谢您的帮助! :)