天天看点

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

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

  • ​​1 需求​​
  • ​​2 连续重复数据量的判断​​
  • ​​3 将单条记录的处理应用到整个文件中​​
  • ​​4 保存​​

手动反爬虫:

1 需求

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

2 连续重复数据量的判断

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

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

输出结果如下:(核实为第一条贷款人员12个月的信息)

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

对列表中的数据进行遍历,然后根据元素的下标依次进行相邻位置的判断,并且要求元素是为“正常”,所以需要添加一个数值累加器,获取连续重复的次数,代码如下

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

输出结果如下:(判断“正常”连续重复元素共5次,与实际情况相符)

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

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

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

import pandas as pd

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

输出结果如下:(此时最后一列数据还是空值)

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

将对于单条数据处理的过程封装为函数,应用到整个数据中。

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)      

输出结果如下:(函数中添加了一个条件判断,如果连续出现的数值超过5就标记为正常,否则就是一场,然后pandas中多列处理时候需要指定axis=1)

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

关于f([x[name] for name in data.columns[5:-1]])讲解。就是将所有要使用的列名称添加到列表,构成最初的那个列表,然后pandas是批量进行数据操作,这里的x就是针对每一条行数据。

4 保存

直接将data生成为excel文件即可

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