天天看点

DataFrame 根据同一行多列的值做判断,生成新的列值,df.apply,lambda的使用

主要是DataFrame.apply函数的应用,如果设置axis参数为1则每次函数每次会取出DataFrame的一行来做处理,如果axis为1则每次取一列。 

import pandas as pd
import os
pd.set_option('display.max_rows',1000)   # 具体的行数或列数可自行设置
pd.set_option('display.max_columns',1000)

df=pd.read_csv("testfile1.csv",header=0,encoding="gbk")

def new_sort(row):
    if row["sex"]=="男":
        part1="M"
    else:
        part1="F"
    if row["score"]>85:
        part2="A"
    else:
        part2="B"
    final=part1+"_"+part2
    return final

df["new_val"]=df.apply(lambda x:new_sort(x),axis=1)
print(df)
           

输出为:

ID sex  subject  score new_val
0   10001   男  English    100     M_A
1   10002   女    Maths     85     F_B
2   10003   女  English     87     F_A
3   10004   女  science    100     F_A
4   10005   女  English     95     F_A
5   10006   男  science     96     M_A
6   10007   女    Maths     89     F_A
7   10008   男  science     87     M_A
8   10009   男      ICT     85     M_B
9   10010   男      ICT     97     M_A
10  10011   男    Maths     86     M_A
           

参考:https://blog.csdn.net/qq_30565883/article/details/79464266

以上,记录本人学习过程。