В основном в Mysql, эти типы идентификаторов используются в запросах `
, "
, '
и ()
.
"
или '
используйте для включения строки как значения "26-01-2014 00:00:00"
или '26-01-2014 00:00:00'
. Этот идентификатор используется только для строковой неагрегатной функции, такой как now() or sum ,max
и т. Д. `
использовать для включения таблицы таблицы или таблицы, например. выберите column_name
из table_name
, где id = '2' ()
используются только для того, чтобы просто заключить части запроса, например. выберите column_name
из table_name
где (id = '2' и gender = 'male') или name = 'rakesh'. Метод # 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]
Обратите внимание, что результирующие индексы различны, даже если содержимое строк одинаковое.
Вышеупомянутый ответ работал отлично, если есть / вы хотите один мин. В моем случае может быть несколько минут, и мне нужны все строки, равные 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 () также относится к этому вопросу, но не работает для меня.