0
点赞
收藏
分享

微信扫一扫

【pandas新增数据列看视频笔记】

you的日常 2022-05-01 阅读 67

文章目录


前言

提示:这里可以添加本文要记录的大概内容:

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"]

运行后用df.head()

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()

运行后前5行
在这里插入图片描述

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方法还不太熟悉

举报

相关推荐

0 条评论