Как создать новый столбец, который возвращает значение из другой таблицы по определенным критериям в Python - PullRequest
0 голосов
/ 30 мая 2019

У меня есть две таблицы:

  • Баланс счета

В нем три столбца: Account_ID, Date, Balance_amount

  • Транзакция счета

В нем три столбца: Account_ID, date ,action_amount

Эти две конюшни имеют разные строки, и не у каждой учетной записи есть сумма транзакции.поэтому я хочу создать новый столбец в таблице Баланс счета, который называется транзакция_амма, который возвращает транзакцию_амму, если эта учетная запись показана в таблице транзакций счета, в противном случае возвращает 0. Я попытался это np.where(data1.account_id.isin(data2._account_id), data2.amount,0), но он говорит operands could not be broadcast together with shapes (123171,) (668306,) () Как я могу решить это в Python?

1 Ответ

0 голосов
/ 30 мая 2019

Я предполагаю, что вы используете панд.

Если у вас несколько data_amounts для account_id в data2, вероятно, лучше всего использовать merge :

data1.merge(data2, on='account_id', how='left')

Это вернет np.nan для account_ids в data1, ноне в данных2.Он также вернет оба столбца даты - из данных1 и данных2.И он будет возвращать строку для каждой транзакции за счет account_id.

Если для account_id существует только одна транзакция_аммер, вы можете преобразовать data2 в словарь и сопоставить его с data1 следующим образом:

data2_dict = data2.set_index('account_id).to_dict()['transaction_amount']
data1['transaction_amount'] = data1['account_id'].map(data2_dict)

Вы также получите np.nan для account_idsв данных1, но не в данных2.

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