Как отфильтровать строки в датафрейме по наибольшему времени даты? - PullRequest
2 голосов
/ 22 апреля 2019

Я пытаюсь отфильтровать строку во фрейме данных с разными датами для разных фруктов, я хочу получить только строку с самой новой датой для каждого фрукта.

Я делаю этов Python 3.

import pandas as pd

d = {'Fruit':[Melon, Melon, Melon, Apple,Apple], 
    'Date':[203313, 414214, 511515,123223,501010]}
df = pd.DataFrame(d)

print(df)

Вывод:

     Date  Fruit
0  203313  Melon
1  414214  Melon
2  511515  Melon
3  123223  Apple
4  501010  Apple

В приведенном выше примере df правильный результат будет Melon, 511515 и Apple 501010.

Ответы [ 2 ]

1 голос
/ 22 апреля 2019
df.groupby('Fruit').Date.max()
1 голос
/ 22 апреля 2019

Сначала сгруппируйте фрейм данных на Fruit и получите max значение Date и получите такие индексы строк.

Вот пример кода

$ipython
In [1]: import pandas as pd
    ...:
    ...: d = {'Fruit':["Melon", "Melon", "Melon", "Apple","Apple"],
    ...:  'Date':[203313, 414214, 511515,123223,501010]}
    ...: df = pd.DataFrame(d)
    ...:
    ...: df
    ...:
    ...:
Out[1]:
     Date  Fruit
0  203313  Melon
1  414214  Melon
2  511515  Melon
3  123223  Apple
4  501010  Apple

In [2]: idx = df.groupby(['Fruit'], sort=False)['Date'].transform(max) == df.Date

In [3]: df[idx]
Out[3]:
     Date  Fruit
2  511515  Melon
4  501010  Apple

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...