【python数据处理】pandas根据多列连续重复值的总和数量判断向新一列添加内容

pandas根据多列连续重复值的总和数量判断向新一列添加内容

手动反爬虫:原博地址 https://blog.csdn.net/lys_828/article/details/125288319

 知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息

1 需求

在这里插入图片描述

2 连续重复数据量的判断

假定s是取值与一条1月-12月份的数据,表现了这12个月份人员贷款的状态。

s = ['正常','正常','关注','次级','正常','正常','正常','正常','正常','关注','次级','正常']
print(len(s))

输出结果如下:(核实为第一条贷款人员12个月的信息)
在这里插入图片描述对列表中的数据进行遍历,然后根据元素的下标依次进行相邻位置的判断,并且要求元素是为“正常”,所以需要添加一个数值累加器,获取连续重复的次数,代码如下

num = 0
for i,j in enumerate(s):
	try:
		if j == '正常' and s[i] == s[i+1]:
			num += 1
	except:
		pass
print(num)

输出结果如下:(判断“正常”连续重复元素共5次,与实际情况相符)
在这里插入图片描述

3 将单条记录的处理应用到整个文件中

读入文件,为了方便处理输出,把问题的合并单元格删除,顺便再添加两条数据进行核实

import pandas as pd

data = pd.read_excel(r'C:\Users\86177\Desktop\问题.xlsx')
data

输出结果如下:(此时最后一列数据还是空值)
在这里插入图片描述将对于单条数据处理的过程封装为函数,应用到整个数据中。

def f(s):
    num = 0
    for i,j in enumerate(s):
        try:
            if j == '正常' and s[i] == s[i+1]:
                num += 1
        except:
            pass
        
    return '正常' if num>=5 else '异常'


data['是否正常'] = data.apply(lambda x: f([x[name] for name in data.columns[5:-1]]),axis=1)
data

输出结果如下:(函数中添加了一个条件判断,如果连续出现的数值超过5就标记为正常,否则就是一场,然后pandas中多列处理时候需要指定axis=1)
在这里插入图片描述关于f([x[name] for name in data.columns[5:-1]])讲解。就是将所有要使用的列名称添加到列表,构成最初的那个列表,然后pandas是批量进行数据操作,这里的x就是针对每一条行数据。

4 保存

直接将data生成为excel文件即可
在这里插入图片描述打开文件界面如下(完美解决问题)
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lys_828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值