Pandas DataFrame新增一列

目录

前言

一、直接赋值

二、df.apply()方法

三、np.where()方法

四、df.assign()方法

五、按照条件选择分组分别赋值


前言

在进行数据分析时,经常需要按照一定的条件创建新的数据列,然后进行进一步分析。

  1. 直接赋值

  2. df.apply()方法

  3. np.where()方法

  4. df.assign方法

  5. 按照条件选择分组分别赋值

一、直接赋值

#直接赋值
#方法一:增加值为空的新列
df['D']=''  #增加D列,并赋值为空值。

#方法二:根据已有列增加新列
df['D']=df['A']//10 #新建列D。A列数据除以10取整,结果放到D列
df['D']=df['A']>85 #新建列D。数据为True或False

二、df.apply()方法

将传入的func应用到每一列或每一行,进行元素级别的运算。

#df.apply()方法

df['D']=df.apply(lambda x: 'yes' if x['A']>50 else 'no',axis=1) #新增D列,A列>50,则D为yes,否则为no.
#axis=1,按行操作。axis=0,按列操作

def get_wendu_type(x):
    if x['bWendu'] > 33:
        return "高温"
    elif x['yWendu'] < -10:
        return "低温"
    else:
        return "常温"

# 注意需要设置axis--1,这时Series的index是columns
df.loc[:, 'wendu_type'] = df.apply(get_wendu_type, axis=1) #apply调用自定义函数,新建列。当’bWendu'列>33,赋值‘高温’;当'yWendu'列<10,赋值‘低温’;其余赋值‘常温’

三、np.where()方法

#np.where()方法
df['D']=np.where(df.['A]>50, 'yes','no')

四、df.assign()方法

df.assign(** kwargs)#创建或修改列并添加到原数据中。

参数: #kwargs:关键字值对(列名,[函数,系列,标量或数组])

返回:df 

#df.assign()方法
df_huashi = df.assign(
    yWendu_huashi=lambda x: x['yWendu'] * 9 / 5 + 32,
    bWendu_huashi=lambda x: x['bWendu'] * 9 / 5 + 32)


df=pd.DataFrame({'A':[31,32,33],'B':[41,42,43]})
df.assign(B=df.A, C=lambda x:x['A']+ x['B'])# 关键字参数相互依赖位置Python3.6以上版本
 
   A  B  C
0 31 31 62
1 32 32 64
2 33 33 66

五、按照条件选择分组分别赋值

#根据已有列条件筛选,创建新列
df.loc[df['A']>50,'D']='yes' #筛选A列大于50的行,D列不存在,则新建D列并相应行赋值yes,其余行值为Nan;D列存在,则D列重新赋值。
df.loc[(df['A']>50)&(df['B']>80)&(df['C'].isin(['A','B'])),'D']='yes' #根据多列条件筛选

参考文章:

Pandas新增数据列

pandas map(), apply(), applymap() 区别解析

pandas38 df.assign添加修改列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值