Pandas深入浅出

4.Pandas新增数据列

文章目录

  • 4.Pandas新增数据列
  • 前言
  • 一、直接赋值
  • 二、df.apply方法
  • 三、df.assign方法
  • 四、按条件选择分组分别进行赋值
  • 总结


前言

不知道怎么搞的,我放在CSDN上免费下载的资源,平台竟然给附加了积分的要求。我用百度网盘分享一下:
链接:https://pan.baidu.com/s/1njABjnXK9iIapwpdv9CaCA
提取码:6666

笔者最近正在学习Pandas数据分析,将自己的学习笔记做成一套系列文章。本节主要记录Pandas的新增数据列方法,如apply方法。
在进行数据分析的时候,经常需要按照一定条件创建新的数据列,然后进一步进行分析


一、直接赋值

import pandas as pd
fpath="./datas/600033.csv"
df=pd.read_csv(fpath)
df.head()

Pandas深入浅出_第1张图片

#其实,df["new_col"]就是一个Series,后面的减法返回的是Series
df.loc[:,"new_col"]=df["open"]-df["low"]
df.head()

Pandas深入浅出_第2张图片

二、df.apply方法

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.apply.html
Apply a function along an axis of the DataFrame.

Objects passed to the function are Series objects whose index is either the DataFrame’s index (axis=0) 
or the DataFrame’s columns (axis=1). By default (result_type=None), the final return type is inferred from 
the return type of the applied function. Otherwise, it depends on the result_type argument.

用人话说就是在apply()参数中函数的参数来说,如果axis=0表示索引就是index,axis=1表示索引就是column

def get_type(x):
    if x["high"]>2.60:
        return "高价"
    if x["low"]<2.4:
        return "低价"
    return "正常"

#注意需要设置axis=1,这是series的index是columns
df.loc[:,"price_type"]=df.apply(get_type,axis=1)
#本方法可以统计各个值的情况
df["price_type"].value_counts()

Pandas深入浅出_第3张图片

三、df.assign方法

官网: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.assign.html

Assign new columns to a DataFrame.

Returns a new object with all original columns in addition to new ones. Existing columns that are re-assigned will be overwritten.

该方法是返回新的对象,对于原来的df不会做修改
可以同时添加多个新的列

df.assign(
        new_col1=lambda x:x["high"]*5+2,
        new_col2=lambda x:x["low"]*2+4
)

Pandas深入浅出_第4张图片

四、按条件选择分组分别进行赋值

df['new_col3']='嘻嘻~'
df.loc[df["high"]-df['low']<=0.05,'new_col3']="差距小"
df.loc[df["high"]-df['low']>=0.20,'new_col3']="差距大"
df['new_col3'].value_counts()

Pandas深入浅出_第5张图片

总结

这就是pandas增加新的列的基本用法了,希望可以帮助到你。

你可能感兴趣的:(pandas,python,数据分析,pandas)