Агрегация панд: как создать несколько новых столбцов из одного столбца и наоборот - PullRequest
0 голосов
/ 17 февраля 2019

Я предварительно обрабатываю следующий Pandas фрейм данных.

a

Для того же assetid я хочу найти первый и последний AccountingDate и создайте еще один столбец isSold на основе следующей логики AccountingDate.

if AccountingDate of all deals for same assetid is Null:
    isSold = False
else:
    isSold = True

В то же время я хочу выяснить для каждого assetid, Amount первого и последнего AccountingDate.

В целом groupby агрегация в Pandas выглядит следующим образом:

df.groupby('assetid').agg({'A', func})

Однако мои функции агрегирования намного сложнее, от AccountingDate до генерации 3 столбцов FirstAccountingDate,LastAccountingDate, isSold;из AccountingDate и Amount вместе, чтобы генерировать FirstDealAmount и LastDealAmount.

Каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 17 февраля 2019

Если вы хотите получить first date и last date, и проверьте, оба ли они null.Вы можете сделать это с помощью следующего кода.

print(df)

  assetId       date
0      1,        NaT
1      1, 2018-10-01
2      1, 2018-10-02
3      1, 2018-10-03
4      4,        NaT
5      4,        NaT
def isSold(date_array):
    last = date_array.max()
    first = date_array.min()
    return pd.isnull(last) & pd.isnull(last)

result = df.groupby("assetId").date.apply(isSold).reset_index()
print(result)

Это дает:

  assetId   date
0      1,  False
1      4,   True
...