Как бороться со значениями Юникода в столбце - PullRequest
1 голос
/ 04 апреля 2019

У меня есть столбец («скидка») в df, каждое значение которого имеет свой формат:

{u'customer': u'xdawd', u'end': None, u'coupon': {u'object': u'coupon', u'name': u'Black Friday', u'percent_off': None, u'created': 213213, u'times_redeemed': 10, u'amount_off': 2500, u'currency': u'gbp', u'object': u'discount', u'start': 1543327380, u'subscription': u'uiodsjciosdj'}

Я хочу вернуть значение процент_офф или значение суммы_офф (отображается только один из обоих)в новом столбце, так что я должен получить тот, который не так, как None по своему значению.

просто пример того, как это в Excel: https://i.imgur.com/Dt2fj8i.png

1 Ответ

2 голосов
/ 04 апреля 2019

С lambda function и Series.apply:

df['discount'].apply(lambda x: x['coupon'].get('percent_off') or x['coupon'].get('amount_off'))

[out]

0    2500
Name: discount, dtype: int64

Или если вы предпочитаете быть более явными в соответствии сПредложение @lenz:

def extract_discount(x):
    return x['coupon'].get('percent_off') or x['coupon'].get('amount_off') 

df['discount'].apply(extract_discount)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...