【发布时间】:2026-01-18 02:30:02
【问题描述】:
我有一个如下所示的数据框“数据”:
| f1 | f2 | f3 |
|---|---|---|
| 11 | 34 | a |
| 14 | 10 | a |
| 20 | 12 | a |
| 15 | 19 | b |
| 19 | 29 | b |
| 29 | 30 | b |
如果 f3 是 a,我想找到 f2 的最小值。我不想在 f3 = a 或 f3 = b 时找到 f2 的最小值。然后我想删除与数据帧中 f2 中的最小值相关联的观察。所以我有这个代码:
a_part = data[data['f3'] == 'a'
min1 = a_part['f2'].min()
min1 = data['f2'] = min1
data_new_1 = pd.dataframe(data.loc[~min1])
效果很好。现在我的数据框看起来像:
| f1 | f2 | f3 |
|---|---|---|
| 11 | 34 | a |
| 20 | 12 | a |
| 15 | 19 | b |
| 19 | 29 | b |
| 29 | 30 | b |
但是,我想通过使用循环来一一删除 f3 = a 时 f2 的最小值和相关的观察值,并且每次都有一个新的数据帧。所以本质上 data_new_2 看起来像:
| f1 | f2 | f3 |
|---|---|---|
| 11 | 34 | a |
| 15 | 19 | b |
| 19 | 29 | b |
| 29 | 30 | b |
直到 f3 中只剩下 b。我试图为它做一个循环:
for i in range(1,6):
IN = data_new_i[['f3'] == 'a']
min1 = a_part['f2'].min()
min1 = data_new_i['f2'] == min1
vars()[data_new_i++] = pd.DataFrame(data.loc[~min1])
这不起作用。我对 Python 使用循环索引处理新数据帧名称的方式非常不熟悉。我想我必须使用 dict 来放入新的数据框,但我不知道如何从 dict 中提取数据框的列,以及如何将新的数据框保存到 dict 中。有人可以帮帮我吗?
【问题讨论】:
标签: python pandas dataframe loops min