[Pandas] assign()函数

在我们处理数据的时候,需要根据某个列进行计算得到一个新列,以便后续的使用,相当于是根据已知列得到新的列,这时我们可以考虑使用pandas.DataFrame.assign()函数

1.使用assign函数不会改变原数据,而是返回一个新的DataFrame对象,包含所有现有列和新生成的列

提示Tips: assign和apply函数的主要区别在于前者不改变原数据,apply函数是在原数据的基础上添加新列

import pandas as pd

df = pd.DataFrame({'A': ['A1', 'A2', 'A3'],
                   'B': ['B1', 'B2', 'B3'],
                   'C': ['C1', 'C2', 'C3']},
                   index=['One', 'Two', 'Three'])

res1 = df.assign(A=0)

res2 = df.assign(D=437)

# 将'A'列中的所有值小写,生成'Lower_A'列
res3 = df.assign(Lower_A =df["A"].str.lower())

'''
        A   B   C
One    A1  B1  C1
Two    A2  B2  C2
Three  A3  B3  C3
'''
print(df)

df 

res1

res2

res3

2.assign函数能够同时操作多个列名,并且中间生成的列名能够直接使用

示例1:计算每个人的BMI指数

import pandas as pd

df1 = pd.DataFrame({
    "Name":["Andy","Bob","Candy"],
    "Weight":[78,65,87],
    "Height":[1.82,1.75,1.89]
})

# 同时使用'Weight'和'Height'两列参与计算,生成'BMI'列
res1 = df1.assign(BMI = df1["Weight"] / (df1["Height"] ** 2))

df1

res1

示例2

import pandas as pd

df2 = pd.DataFrame({"col1":["Andy","Bob", "Candy"],
                    "col2":[12, 24, 48]})

# 在col4计算中直接使用col3
# 在col6中直接使用col5
res1 = df2.assign(
        col3 = lambda x: x["col2"] / 2 + 10,         
        col4 = lambda x: x["col3"] * 5,          
        col5 = lambda x: x.col1.str.upper(),         
        col6 = lambda x: x.col5.str.lower()  
)

df2

res1 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值