基于索引条件对 Pandas 数据帧进行操作

Operating on Pandas dataframe based on index criteria

提问人:Jazim Sohail 提问时间:9/7/2023 最后编辑:Ro.oTJazim Sohail 更新时间:9/8/2023 访问量:21

问:

我有一个 pandas 数据帧,我需要根据一个和另一个接近的数据点过滤掉数据,例如,如果有 5 个数据点一个接一个,我只想将具有最低值的数据行保留在另一列中。

我想发生的事情的一个例子如下:

df_orig = 

0 2
1 5
2 7
3 3
13 3
14 4
19 1
26 4
27 2
28 8 
df_wanted

0 2
13 3
19 1
27 2

上面示例中的第一列是索引,第二列只是包含一些值的列。我想进行筛选,以便根据列中的最小值,每个数据索引集群只保留一行。df_orig

希望这是有道理的,任何帮助都值得赞赏。

Python Pandas 数据帧 索引

评论


答:

0赞 Amira Bedhiafi 9/7/2023 #1

请尝试以下操作:

import pandas as pd

data = {
    'value': [2, 5, 7, 3, 3, 4, 1, 4, 2, 8]
}
index = [0, 1, 2, 3, 13, 14, 19, 26, 27, 28]

df_orig = pd.DataFrame(data, index=index)

# Calculate difference between the current and previous index
df_orig['diff'] = df_orig.index.to_series().diff().fillna(999)

# Determine clusters
df_orig['group'] = (df_orig['diff'] > 1).cumsum()

# Sort by value within each group and drop duplicates keeping the first (smallest value)
df_wanted = df_orig.sort_values(['group', 'value']).drop_duplicates('group', keep='first').drop(['diff', 'group'], axis=1)

print(df_wanted)

enter image description here