如何迭代熊猫数据框并在每次迭代中删除重复项?

时间:2019-08-15 19:44:17

标签: python python-3.x pandas

我有一个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,但未考虑该行的年份和/或季度。

谢谢您的帮助! :)

0 个答案:

没有答案