Как вернуть строки фрейма данных pandas на основе условий, которые зависят от подмножеств блока данных [duplicate]

В основном в Mysql, эти типы идентификаторов используются в запросах `, ", ' и ().

  1. " или ' используйте для включения строки как значения "26-01-2014 00:00:00" или '26-01-2014 00:00:00'. Этот идентификатор используется только для строковой неагрегатной функции, такой как now() or sum ,max и т. Д.
  2. ` использовать для включения таблицы таблицы или таблицы, например. выберите column_name из table_name, где id = '2'
  3. () используются только для того, чтобы просто заключить части запроса, например. выберите column_name из table_name где (id = '2' и gender = 'male') или name = 'rakesh'.
31
задан ojdo 30 April 2014 в 18:53
поделиться

2 ответа

Метод # 1: используйте idxmin(), чтобы получить индексы элементов минимума diff, а затем выберите те:

>>> df.loc[df.groupby("item")["diff"].idxmin()]
   item  diff  otherstuff
1     1     1           2
6     2    -6           2
7     3     0           0

[3 rows x 3 columns]

Метод № 2: сортировать по diff, а затем взять первый элемент в каждой группе item:

>>> df.sort_values("diff").groupby("item", as_index=False).first()
   item  diff  otherstuff
0     1     1           2
1     2    -6           2
2     3     0           0

[3 rows x 3 columns]

Обратите внимание, что результирующие индексы различны, даже если содержимое строк одинаковое.

61
ответ дан Alex Newman 23 August 2018 в 21:18
поделиться

Вышеупомянутый ответ работал отлично, если есть / вы хотите один мин. В моем случае может быть несколько минут, и мне нужны все строки, равные min, которые .idxmin() не дает вам. Это работало

def filter_group(dfg, col):
    return dfg[dfg[col] == dfg[col].min()]

df = pd.DataFrame({'g': ['a'] * 6 + ['b'] * 6, 'v1': (list(range(3)) + list(range(3))) * 2, 'v2': range(12)})
df.groupby('g',group_keys=False).apply(lambda x: filter_group(x,'v1'))

. В стороне, .filter () также относится к этому вопросу, но не работает для меня.

0
ответ дан citynorman 23 August 2018 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: