在进行数据分析时,经常需要按照一定的条件创建新的数据列,然后进行进一步分析。
#直接赋值
#方法一:增加值为空的新列
df['D']='' #增加D列,并赋值为空值。
#方法二:根据已有列增加新列
df['D']=df['A']//10 #新建列D。A列数据除以10取整,结果放到D列
df['D']=df['A']>85 #新建列D。数据为True或False
将传入的 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,赋值'低温';其余赋值'常温'< code></10,赋值'低温';其余赋值'常温'<>
#np.where()方法
df['D']=np.where(df.['A]>50, 'yes','no')
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' #根据多列条件筛选
参考文章:
Original: https://blog.csdn.net/m0_64336020/article/details/122130294
Author: python-小卒
Title: Pandas DataFrame新增一列
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751119/
转载文章受原作者版权保护。转载请注明原作者出处!