【发布时间】:2022-01-03 00:26:18
【问题描述】:
我正在计算相关性,我需要过滤的数据框。
我希望从数据帧中删除当前行下的行,这些行从第一行开始高于或低于 X 数量,并一直循环遍历数据帧直到最后一行。
示例:
df['y'] 的值为 50,51,52,53,54,55,70,71,72,73,74,75 如果 X = 10,它将从 50 开始,并在 10+- 范围内看到 51、52、53、54、55 并删除行。 70 将保留,因为它不在该范围内,并且相同的测试将在 70 重新开始,其中 71、72、73、74、75 和相应的行将被删除
如果 X=10 的过滤器因此会给我们留下包括 df 的 50,75 在内的行。
它会给我留下一个干净的数据框,删除与基本上相同观察期的第一个实例相关联的实例。我尝试编写一个循环来做到这一点,但此时我得到了错误的结果并且绝望了。希望有人能纠正错误或指出正确的方向。
df6['index'] = df6.index
df6.sort_values('index')
boom = len(dataframe1.index)/3
#Taking initial comparison values from first row
c = df6.iloc[0]['index']
#Including first row in result
filters = [True]
#Skipping first row in comparisons
for index, row in df6.iloc[1:].iterrows():
if c-boom <= row['index'] <= c+boom:
filters.append(False)
else:
filters.append(True)
# Updating values to compare based on latest accepted row
c = row['index']
df2 = df6.loc[filters].sort_values('correlation').drop('index', 1)
df2
【问题讨论】:
标签: python pandas dataframe loops