文章目录
前言
提示:这里可以添加本文要记录的大概内容:
pandas新增数据列总共有四种方法:1、直接赋值。2、df.apply()。3、df.assign().4、按照条件选择分组分别赋值
提示:以下是本篇文章正文内容,下面案例可供参考
一、视频链接
https://www.bilibili.com/video/BV1UJ411A7Fs?p=5
二、使用步骤
0.数据准备
代码如下(示例):
import pandas as pd
fpath="./data/tianqi.xls"
df=pd.read_excel(fpath)
#将温度列的数据进行处理,删除符号,变成数字类型,这也是直接赋值的方法
df.loc[:,"bwendu"]=df["bwendu"].str.replace("℃","").astype('int32')
df.loc[:,"ywendu"]=df["ywendu"].str.replace("℃","").astype('int32')
1.直接赋值
计算温度差最高温度减最低温度(示例):
#df["bwendu"]是一个series,减完返回的还是一个series
df.loc[:,"wencha"]=df["bwendu"]-df["ywencha"]
2.df.apply
apply a function along an axis of the dataframe.
objects passed to the function are series objects whose index is either the dataframe’s indax(axis=0) or the dataframe’s columns(axis=1).
一般用的是列名,即axis=1
添加一列温度类型:
如果最高温度大于32就是高温,低于13就是低温,否则就是常温(示例):
def get_wendu_type(x):
if x["bwendu"]>32:
return '高温'
if x["ywendu"]<13:
return '低温'
return '常温'
#注意设置axis==1,这是series的index是columns
df.loc[:,"wendu_type"]=df.apply(get_wendu_type,axis=1)
df.head()
#查看温度类型的计数
df["wendu_type"].value_counts()
3.df.assign
可以同时添加多个新的列https://zhuanlan.zhihu.com/p/412470486
assign new columns to a dataframe.
returns a new object with all original columns in addition to new ones.
关于参数的几点说明:
列名是关键字keywords
如果列名是可调用的,那么它们将在DataFrame上计算并分配给新的列 如果列名是不可调用的(例如:Series、标量scalar或者数组array),则直接进行分配
最后,这个函数的返回值是一个新的DataFrame数据框,包含所有现有列和新生成的列
将温度从摄氏度变成华氏度
df.assign(ywendu_hua= lambda x:x["ywendu"]*9/5+32,bwendu_hua= lambda x:x["bwendu"]*9/5+32)
#这样操作后,数据框是不变的,但是如果仅仅只运行到上一步,就能看到新增两列
df.head()
4.按条件选择分组分别赋值
先按条件选择数据,然后对这部分数据赋值新列
下面实现:高低温差大于14度,则认为温差大
#先创建空列(这是第一种创建新列的方法)
df["温差类型"]=''
df.loc[df["bwendu"]-df["ywendu"]>13,"温差类型"]="大"
df.loc[df["bwendu"]-df["ywendu"]<=12,"温差类型"]="小"
df.head()
总结
提示:这里对文章进行总结:
assign方法还不太熟悉