在数据帧的列中为特定值保留3行

时间:2015-07-17 18:55:58

标签: python pandas

我有一个数据框df,其中包含months_to_maturity列,并且每行都有多行与months_to_maturity 1,2等相关联。我试图只保留与特定months_to_maturity值相关联的前3行。例如,对于months_to_maturity = 1,我希望只有3个关联行和months_to_maturity = 2,另外3行,依此类推。我尝试使用下面的代码执行此操作,但得到错误IndexError: index 21836 is out of bounds for axis 0 with size 4412,因此我想知道是否有更好的方法来执行此操作。 pairwise给出数据帧的当前和下一行。 months_to_maturity的值已排序。

count = 0
for (i1, row1), (i2,row2) in pairwise(df.iterrows()):
    if row1.months_to_maturity == row2.months_to_maturity:
        count = count + 1
        if count == 3:
            df.drop(df.index[i1])
            df = df.reset_index()        
    elif row1.months_to_maturity != row2.months_to_maturity:
        count = 0

谢谢

1 个答案:

答案 0 :(得分:1)

你可以这样做:

df.groupby('months_to_maturity').head(3)