У меня есть фрейм данных [Date, Value] (cash_movement_df в приведенном ниже коде).Где значения необходимо обновить (суммировать) для дат.Если дата еще не присутствует в фрейме данных, вставьте ее как новую строку [дата, значение].
Я попытался использовать следующий код, но искал что-то более эффективное.
date = transaction['date'].iat[0]
value = transaction['value'].iat[0]
mask = cash_movement_df['date']==date
if cash_movement_df.loc[mask]['value'].any():
cash_movement_df.loc[mask, 'value'] += value
else:
cash_movement_df.loc[-1] = [date, value]
cash_movement_df.index = cash_movement_df.index + 1
Примерввод-вывод:
cash_movement_df = pd.DataFrame({'date': ['2019-01-01', '2019-01-02'], 'value': [1, 2]})
transaction = pd.DataFrame({'date': ['2019-01-03'], 'value': [3]})
date value
2019-01-01 1.0000
2019-01-02 2.0000
2019-01-03 3.0000
transaction = pd.DataFrame({'date': ['2019-01-02'], 'value': [3]})
date value
2019-01-01 1.0000
2019-01-02 5.0000
Ищем более элегантное решение.Обратите внимание, что cash_movement_df имеет большой размер, и транзакция по 1 за раз.Поэтому я считаю, что решение, которое делает копию cash_movement_df, неэффективно.