У меня есть существующий панды Dataframe в следующем формате:значения Обновление в панд dataframe, используя другой dataframe
sample_dict = {'ID': [100, 200, 300], 'a': [1, 2, 3], 'b': [.1, .2, .3], 'c': [4, 5, 6], 'd': [.4, .5, .6]}
df_sample = pd.DataFrame(sample_dict)
Теперь я хочу, чтобы обновить df_sample
с помощью другого dataframe, который выглядит следующим образом:
sample_update = {'ID': [100, 300], 'a': [3, 2], 'b': [.4, .2], 'c': [2, 5], 'd': [.7, .1]}
df_updater = pd.DataFrame(sample_update)
правило для обновления заключается в следующем:
- для столбца
a
иc
, просто добавьте значения отa
иc
вdf_updater
. - Для столбца
b
это зависит от обновленного значенияa
. Предположим, что функция обновления будетb = old_b + (new_b/updated_a)
. - Для столбца
d
правила аналогичны правилам столбцаb
, за исключением того, что они зависят от значений обновленныхc
иnew_d
.
Вот желаемый результат:
new = {'ID': [100, 200, 300], 'a': [4, 2, 5], 'b': [.233333, .2, .33999999], 'c': [6, 5, 11], 'd': [.51666666, .5, .609090]}
df_new = pd.DataFrame(new)
Мои актуальные проблемы используют несколько более сложную версию этого, но я думаю, что этот пример достаточно, чтобы решить мою проблему. Кроме того, в моем реальном DataFrame у меня больше столбцов, следующих по тем же правилам, поэтому я хотел бы, чтобы этот метод мог перебирать столбцы, если это возможно. Благодаря!
Вы можете добавить необходимые dataframe для облегчения проверочных решений? – jezrael
хорошо, я добавлю это. – jtitusj
И один вопрос - значения «ID» уникальны? – jezrael