Панды - Как вы группируете несколько столбцов и получаете наименьшее значение? - PullRequest
0 голосов
/ 17 октября 2019

У меня есть фрейм данных с числом столбцов 75+. Я пытаюсь устранить и сохранить соответствующие строки данных для теста. Я только что создал образец набора данных. Я знаю, как можно решить эту проблему в группе SQL и получить все столбцы. Как мне это сделать здесь? Я опубликовал одну из многих попыток, которые имели смысл для меня.

u_id = ['A123','A123','A123','A124','A124','A125']
year = [2016,2017,2018,2018,1997,2015]
text = ['text1','text2','text1','text1','text56','text100']


df = pd.DataFrame({'u_id': u_id,'year': year,'text':text}) 
df

Ввод данных

        u_id    year    text
0   A123    2016    text1
1   A123    2017    text2
2   A123    2018    text1
3   A124    2018    text1
4   A124    1997    text56
5   A125    2015    text100

Попытка:

df[df.groupby(['u_id','year'])['year'].min()]
# error: `KeyError: '[2016 2017 2018 1997 2018 2015] not in index'`
# Key exists here, why is this an error? 'groupby/having' in SQL?

Требуется вывод:

u_id    year    text      ...  col1 col2 ..... col_x
A123    2016    text1     ...
A124    1997    text56    ...
A125    2015    text100   ...

1 Ответ

1 голос
/ 17 октября 2019

Я думаю, что вам нужно groupby u_id и сохранить min год

df["year"] = pd.to_numeric(df["year"])
newdf = df.loc[df.groupby(['u_id'])['year'].idxmin()].reset_index(drop=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...