我有一个数据框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
谢谢
答案 0 :(得分:1)
你可以这样做:
df.groupby('months_to_maturity').head(3)