【python】pandas按照某些行列的数据要求,在新的一列输出要求数据

举例

在日常处理表格的时候,经常会遇到一些要求类似这样的:销售方面,按照A,B产品的销量额做标记;在考核方面,按照某些指标进行最后的评定等等

操作实例

这里就是以上面的表格数据为例,假设进行录取评定,要求选取语文分数大于80,数学和英语分数大于90分且专业课分数不低于120的人,操作过程代码和图形如下:

导入库和创建表格数据:

import pandas as pd

df = pd.DataFrame({
    '姓名':['张三','李四','王二','麻子'],
    '语文':[78,90,55,67],
    '数学':[86,95,45,78],
    '英语':[83,93,56,87],
    '专业课':[150,180,89,103]
})
df

 创建“综合评定”数据列,并进行数据筛选:

df['综合评定'] = ''
df['综合评定'][(df['语文']>80) & (df['数学']>90) & (df['英语']>90) & (df['专业课']>120)] = '录取'
df

拓展延伸

运行代码过后可以发现,这种纯有逻辑符号连接的判断,虽然很容易理解,但是不具有泛化能力,且看上去很冗肿。为了方便代码的保存和调用,可以对代买进行优化并封装成函数,示例如下:

要求:选取2016年,北京和重庆的数据,并做标记,代码如下:

import numpy as np
import pandas as pd
 
data = {'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Hangzhou', 'Chongqing'],
 'year': [2016,2016,2015,2017,2016, 2016],
 'population': [2100, 2300, 1000, 700, 500, 500]}
frame = pd.DataFrame(data, columns = ['year', 'city', 'population'])
 
def function(a, b):
     if ('ing' in a) and (b == 2016):
        return 1
     else:
        return 0
print(frame, '\n')
frame['test'] = frame.apply(lambda x: function(x.city, x.year), axis = 1)
print(frame)

运行结果如下图:

发布了20 篇原创文章 · 获赞 4 · 访问量 1989

猜你喜欢

转载自blog.csdn.net/lys_828/article/details/103715356