Pandas系列教程(4)Pandas新增数据列

您所在的位置:网站首页 pandas添加一列并赋值 Pandas系列教程(4)Pandas新增数据列

Pandas系列教程(4)Pandas新增数据列

2023-01-06 14:34| 来源: 网络整理| 查看: 265

Pandas新增数据列

在进行数据分析时,经常需要按照一定的条件创建新的数据列,然后进行进一步分析

直接复制

df.apply方法

df.assign方法

按照条件选择分组分别赋值

1、读取csv数据到dataframe import pandas as pd file_path = "../files/beijing_tianqi_2018.csv" df = pd.read_csv(file_path) print(df.head())

 

2、直接赋值方法

实例:清理温度列,变成数字列

# 设定索引为日期,方便按日期筛选 df.set_index('ymd', inplace=True) # 替换温度的后缀℃ df.loc[:, 'bWendu'] = df.loc[:, 'bWendu'].str.replace('℃', '').astype('int32') df.loc[:, 'yWendu'] = df.loc[:, 'yWendu'].str.replace('℃', '').astype('int32')

 实例:计算温度差

# 注意df['bWendu']其实是一个Series,后面的减法返回的是Series df.loc[:, 'wencha'] = df['bWendu'] - df['yWendu']

 完整代码:

import pandas as pd file_path = "../files/beijing_tianqi_2018.csv" df = pd.read_csv(file_path) # 替换温度的后缀℃, 并转为int32(修改列) df.loc[:, 'bWendu'] = df.loc[:, 'bWendu'].str.replace('℃', '').astype('int32') df.loc[:, 'yWendu'] = df.loc[:, 'yWendu'].str.replace('℃', '').astype('int32') print(df.head()) print('*' * 50, '\n') # 计算温度差(新增列) # 注意df['bWendu']其实是一个Series,后面的减法返回的是Series df.loc[:, 'wencha'] = df['bWendu'] - df['yWendu'] print(df.head())

 

3、df.apply方法

实例:添加一列温度类型

如果温度大于33度就是高温

低于-10度就是低温

否则是常温

import pandas as pd file_path = "../files/beijing_tianqi_2018.csv" df = pd.read_csv(file_path) # 替换温度的后缀℃, 并转为int32(修改列) df.loc[:, 'bWendu'] = df.loc[:, 'bWendu'].str.replace('℃', '').astype('int32') df.loc[:, 'yWendu'] = df.loc[:, 'yWendu'].str.replace('℃', '').astype('int32') print(df.head()) print('*' * 50, '\n') 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) # 打印前几行数据 print(df.head()) print('*' * 50, '\n') # 查看温度类型的计数 print(df['wendu_type'].value_counts())

 

4、df.assign方法

实例:将温度从摄氏度变成华氏度

import pandas as pd file_path = "../files/beijing_tianqi_2018.csv" df = pd.read_csv(file_path) # 替换温度的后缀℃, 并转为int32(修改列) df.loc[:, 'bWendu'] = df.loc[:, 'bWendu'].str.replace('℃', '').astype('int32') df.loc[:, 'yWendu'] = df.loc[:, 'yWendu'].str.replace('℃', '').astype('int32') print(df.head()) print('*' * 50, '\n') df_huashi = df.assign( yWendu_huashi=lambda x: x['yWendu'] * 9 / 5 + 32, bWendu_huashi=lambda x: x['bWendu'] * 9 / 5 + 32 ) print(df_huashi.head()) print('*' * 50, '\n')

 

5、按条件选择分组分别赋值

按条件先选择数据,然后对着部分数据赋值新列

实例:高低温差大于10度,则认为温差较大

import pandas as pd file_path = "../files/beijing_tianqi_2018.csv" df = pd.read_csv(file_path) # 替换温度的后缀℃, 并转为int32(修改列) df.loc[:, 'bWendu'] = df.loc[:, 'bWendu'].str.replace('℃', '').astype('int32') df.loc[:, 'yWendu'] = df.loc[:, 'yWendu'].str.replace('℃', '').astype('int32') # 打印前几行数据 print(df.head()) print('*' * 50, '\n') # 先创建空列(这是第一种创建新列的方法) df['wencha_type'] = "" df.loc[df['bWendu'] - df['yWendu'] > 10, 'wencha_type'] = "温差大" df.loc[df['bWendu'] - df['yWendu']


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3