Python+pandas根据条件包含apply
环境是Python+pandas,以下代码是多条件apply,条件是【资源类型】=”自建宽带“或”自建铁通融合宽带“,或【五级地址名称】包含”海心路茂名职业技术学院“。sheetOnTheWay['是否纳入统计'] = sheetOnTheWay.apply(
lambda x: "是" if x.资源类型 == '自建宽带' or x.资源类型 == '自建铁通融合宽带' or x.五级地址名称.str.contains(
'海心路茂名职业技术学院') else "否", axis=1)
但第3个条件,判断包含报错,AttributeError: 'float' object has no attribute 'str',应该怎么改?谢谢。 看你的提示显示的需要字符串类型,你的是浮点型,查看一下你数据里的数据吧.
我的用法是= data[~data["xx"].str.contains('xx1|xx2') & ~data["xx"].str.startswith("xxx")]//包含,不包含,左包含 sheetOnTheWay['是否纳入统计']=‘否’
sheetOnTheWay.loc[(sheetOnTheWay.资源类型=='自建宽带')|(sheetOnTheWay.资源类型=='自建铁通融合宽带')|(sheetOnTheWay.五级地址名称.str.contains('海心路茂名职业技术学院')),'是否纳入统计']='是'
手写的有可能符号不太对,可以照着这个思路试试 把运行截图出来啊,就一句报错,,,数据也没看到,,,看这样子肯定是数据类型问题,这种就先定位哪一行,哪个数据,转一下就ok了 一楼应该猜对了,应该是你这一列里混进了纯数字,先把不符合要求的数据清洗出去吧
进来学一下,在看Python。感谢楼主的帖。 {:301_1009:} 如果确定是第三个条件报错的话,说明这一列的数据类型有float啊…………有点怪感觉 rsnodame 发表于 2020-12-9 17:55
如果确定是第三个条件报错的话,说明这一列的数据类型有float啊…………有点怪感觉
已解决。
# 资源类型等于自建宽带、自建铁通融合宽带,或包含三个指定地址的,保留,其他清洗
sheetOnTheWay['是否纳入统计'] = sheetOnTheWay.apply(
lambda x: "是" if x.资源类型 == '自建宽带' or x.资源类型 == '自建铁通融合宽带' or str(x.五级地址名称).find('海心路茂名职业技术学院') >= 0 or str(
x.五级地址名称).find('海城路五路1号茂名职业技术学院') >= 0 or str(x.五级地址名称).find('官渡街道文明路茂名职业技术') >= 0 else "否", axis=1)
页:
[1]