吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1609|回复: 6
收起左侧

[求助] python pandas加列并按条件赋值

[复制链接]
cqwcns 发表于 2020-12-5 12:35
如下代码,我希望在”商户“后面新增一列,字段名为”区域“,并根据”商户“赋值,规则如下:
如果”商户“包含关键字”高州“,则区域=”高州“
如果”商户“包含关键字”茂南“,则区域=”茂南“
如果”商户“包含关键字”信宜“,则区域=”信宜“
如果”商户“包含关键字”化州“,则区域=”化州“


加列并赋值的代码要怎么写?
我查了一下应该是用apply,但未搞懂,请指教,谢谢

[Python] 纯文本查看 复制代码
import numpy as np
import pandas as pd

symbol = ['BABA', 'JD', 'APPLE', 'MS', 'GS', 'WMT']
data = {'行业': ['电商', '电商', '科技', '金融', '金融', '零售'],
        '价格': [176.92, 25.95, 172.97, 41.79, 196.00, 99.55],
        '交易量': [16175610, 27113291, 18913154, 10132145, 2626634, 8086946],
        '雇员': [101550, 175336, 100000, 60348, 36600, 2200000],
        '商户': ['高州市金山建文电讯手机经营部W', '茂名市茂南区大众电脑维修部', '茂名市通汇电信器材有限公司(茂名通汇直营)W',
               '信宜市镇隆镇亚芳手机店W', '中移铁通有限公司化州运营中心W', '信宜市盛汇通讯器材商行W']}
df = pd.DataFrame(data, index=symbol)
df.name = '美股'
df.index.name = '代号'
print(df)

微信图片_20201205123029.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

nightlight 发表于 2020-12-5 13:36
regions = ['高州', '茂南', '信宜', '化州']
df['区域'] = df['商户'].apply(lambda x: ''.join([y if x.find(y) >= 0 else '' for y in regions]))
rsnodame 发表于 2020-12-5 14:27
同意楼上
先写个函数,判断商户属于哪个区域;
apply调用这个函数
 楼主| cqwcns 发表于 2020-12-5 14:52
nightlight 发表于 2020-12-5 13:36
regions = ['高州', '茂南', '信宜', '化州']
df['区域'] = df['商户'].apply(lambda x: ''.join([y if x. ...

有一个问题,因为商户有时可能是空的,当商户是是空时会报错,没有属实'find'。
所以要在加个判断,if商户为空是=”未知“,否则再判断。
AttributeError: 'float' object has no attribute 'find'
 楼主| cqwcns 发表于 2020-12-5 15:21
nightlight 发表于 2020-12-5 13:36
regions = ['高州', '茂南', '信宜', '化州']
df['区域'] = df['商户'].apply(lambda x: ''.join([y if x. ...

你好,还是没搞懂匿名函数的表达式,因为商户有时可能是空的,当商户是是空时会报错,没有属实'find'。所以要在加个判断,if商户为空是=”未知“,否则再判断。怎么写?请指教,谢谢
 楼主| cqwcns 发表于 2020-12-5 15:23
rsnodame 发表于 2020-12-5 14:27
同意楼上
先写个函数,判断商户属于哪个区域;
apply调用这个函数

你好,还是没搞懂匿名函数的表达式,因为商户有时可能是空的,当商户是是空时会报错,没有属实'find'。所以要在加个判断,if商户为空是=”未知“,否则再判断。怎么写?请指教,谢谢
rsnodame 发表于 2020-12-5 16:19
cqwcns 发表于 2020-12-5 15:23
你好,还是没搞懂匿名函数的表达式,因为商户有时可能是空的,当商户是是空时会报错,没有属实'find'。所 ...

诶这个需求比较基础了…………
可以用if...else...的方式单独处理值为空的情况;
也可以用try...except...的办法捕获错误
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 09:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表