提问人:Jazim Sohail 提问时间:9/7/2023 最后编辑:Ro.oTJazim Sohail 更新时间:9/8/2023 访问量:21
基于索引条件对 Pandas 数据帧进行操作
Operating on Pandas dataframe based on index criteria
问:
我有一个 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
希望这是有道理的,任何帮助都值得赞赏。
答:
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)
下一个:熊猫合并 101
评论