【发布时间】:2020-04-04 19:03:01
【问题描述】:
我有一个清单
a = [15, 50 , 75]
使用上面的列表,我必须创建较小的数据框,从主数据框的索引中过滤掉行(行数由列表定义)。
假设我的主要数据框是 df 我想要的数据框是 df1(从行索引 0-15),df2(从行索引 15-65),df3(从行索引 65-125)
因为这只是三个,我可以很容易地使用下面这样的东西:
limit1 = a[0]
limit2 = a[1] + limit1
limit3 = a[2] + limit3
df1 = df.loc[df.index <= limit1]
df2 = df.loc[(df.index > limit1) & (df.index <= limit2)]
df2 = df2.reset_index(drop = True)
df3 = df.loc[(df.index > limit2) & (df.index <= limit3)]
df3 = df3.reset_index(drop = True)
但是,如果我想在主数据框 df 上使用长列表来实现这一点,我正在寻找可迭代的东西,如下所示(这不起作用):
df1 = df.loc[df.index <= limit1]
for i in range(2,3):
for j in range(2,3):
for k in range(2,3):
df[i] = df.loc[(df.index > limit[j]) & (df.index <= limit[k])]
df[i] = df[i].reset_index(drop=True)
print(df[i])
【问题讨论】:
-
根据您的逻辑,它应该是从 0-15 开始,然后从 15-65 开始,然后从 65-90 开始,否则您的规则正在改变
-
是的。没错
-
检查我的答案