如何处理列中的unicode值dict

时间:2019-04-04 10:04:38

标签: python pandas unicode apply

我在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'}

我想在新列中返回percent_off值或amount_off值(仅出现其中之一),所以我必须获得一个不等于None的值。

只是它在Excel中的示例: https://i.imgur.com/Dt2fj8i.png

1 个答案:

答案 0 :(得分:2)

使用lambda functionSeries.apply

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

[出]

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)