在用pandas处理数据时,经常需要按照一定条件来创建写的数据列,然后进一步分析。
下面 四种方法常用于新增数据列:
1)直接赋值
2)df.apply方法
3) df.assign方法
4) 按照条件分组分别赋值
1.直接赋值的方法
代码演示:
#实例 计算 天气预报的温差
import pandas as pd
fpath="../datas/weather_20230115134249.csv"
df = pd.read_csv(fpath)
df.head()
# 替换掉温度的后缀℃
df.loc[:,"气温(度)"] = df["气温(度)"].str.replace("℃","").astype("float")
# 注意,df["气温(度)"]其实是一个Series,后面的减法返回的是Series
df.loc[:,"wencha"]=df["气温(度)"]-2
df.head()
运行结果:
2.使用df.apply()方法
实例:添加一列温度类型:
* 如果最高温度大于33度就是高温
* 低于-5度就是低温
* 否则就是常温
代码演示:
def get_wendu_type(x):
if x["气温(度)"] > 33:
return '高温'
if x["气温(度)"] < -10:
return '低温'
return '常温'
# 注意需要设置axis==1,这是Series的index是columns
df.loc[:,"wendu_type"] = df.apply(get_wendu_type,axis=1)
# 查看 温度类型的计数
df["wendu_type"].value_counts()
运行结果:
3.使用df.assign方法
实例:将温度从摄氏度变成华氏度
代码演示:
# 可以同事添加多个新的列
df.assign(
#摄氏度转华氏度
tem_huashi = lambda x : x["气温(度)"] * 9 / 5 + 32 #运用了lambda 函数
)
运行结果:
4.按照条件选择分组分别赋值
实例:温度减去10度小于15度,则认为温差大
代码演示:
# 先创建空列(这是第一种创建新列的方法)
df['wencha_type']=''
df.loc[df["气温(度)"]-10 < 15,"wencha_type"]="温差大" #根据条件 在已创建的列中添加数值
df.loc[df["气温(度)"]-10 >= 15,"wencha_type"]="温差正常"
df["wencha_type"].value_counts()
运行结果:
本章结束,谢谢大家阅读!
希望大家多多点赞收藏!