Pandas Применение функции к групповым субкадрам данных - PullRequest
0 голосов
/ 12 февраля 2020

Есть ли способ применить функцию к подкадрам данных, а не только к столбцам или строкам основных данных?

Например, если у меня есть
df = pd.DataFrame({'ID': [1,2,2,3,3], 'Valid':[0, 0, 0, 1, 1], 'Value':[10, 5, 10, 0, 10]})

Example DataFrame

, и я хочу, чтобы ожидаемый результат составил
out = pd.DataFrame({'ID':[1,2,3], 'Value':[0, 0, 10]})
Output

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

def calc(subDf):
'''
this is doing some inner calculations for the dataframe which is already grouped.
'''
    output = subDf[subDf['Valid']].sum()
    return output

Есть ли способ сделать это в виде df.groupby('ID').apply(calc)?

1 Ответ

0 голосов
/ 12 февраля 2020

Я думаю, что вам нужно преобразовать столбец в логическое значение, если необходимо, а также добавить имя столбца для столбца фильтра для sum:

def calc(subDf):

    output = subDf.loc[subDf['Valid'].astype(bool), 'Value'].sum()
    return output

df = df.groupby('ID').apply(calc).reset_index(name='Value')
print (df)

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