Pandas常用操作 - 新增数据列
初始化测试数据
df = pd.DataFrame({'stu_name': ['Nancy', 'Tony', 'Tim', 'Jack', 'Lucy'], 'stu_age': [17, 16, 16, 21, 19]})
stu_name stu_age
0 Nancy 17
1 Tony 16
2 Tim 16
3 Jack 21
4 Lucy 19
1. 直接增加一列
df['new_column'] = '-'
stu_name stu_age new_column
0 Nancy 17 -
1 Tony 16 -
2 Tim 16 -
3 Jack 21 -
4 Lucy 19 -
2. apply方法
def cal_label(age):
if age > 18:
return '成年'
else:
return '未成年'
df['label'] = df['stu_age'].apply(cal_label)
stu_name stu_age label
0 Nancy 17 未成年
1 Tony 16 未成年
2 Tim 16 未成年
3 Jack 21 成年
4 Lucy 19 成年
apply 方法中也可以运用 lambda 表达式,使之更加简洁
df['label'] = df['stu_age'].apply(lambda age: '成年' if age > 18 else '未成年')
stu_name stu_age label
0 Nancy 17 未成年
1 Tony 16 未成年
2 Tim 16 未成年
3 Jack 21 成年
4 Lucy 19 成年
3. loc方法
df.loc[:, 'label'] = df['stu_age'].apply(lambda age: '成年' if age > 18 else '未成年')
stu_name stu_age label
0 Nancy 17 未成年
1 Tony 16 未成年
2 Tim 16 未成年
3 Jack 21 成年
4 Lucy 19 成年
4. assign方法
new_df = df.assign(label=df['stu_age'].apply(lambda x: '成年' if x > 18 else '未成年'))
stu_name stu_age label
0 Nancy 17 未成年
1 Tony 16 未成年
2 Tim 16 未成年
3 Jack 21 成年
4 Lucy 19 成年
assign 方法中,传递的是 **kwargs,key为需要增加的列,value为回调函数或者 Series,即 df.assign(k1=Series1, k2=Series2) 的形式。
所以在上例中,计算需要的 label,则需要写成:
new_df = df.assign(label=df['stu_age'].apply(lambda x: '成年' if x > 18 else '未成年'))
因为df['stu_age'].apply(lambda x: '成年' if x > 18 else '未成年')返回的是Series
不能直接写成
new_df = df.assign(label=lambda x: '成年' if x['stu_age'] > 18 else '未成年')
此时会抛异常:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Pandas常用操作 - 新增数据列的更多相关文章
- pandas 新增数据列(直接赋值、apply,assign、分条件赋值)
# pandas新增数据列(直接赋值.apply.assign.分条件赋值) # pandas在进行数据分析时,经常需要按照一定条件创建新的数据列,然后进行进一步分析 # 1 直接赋值 # 2 df. ...
- Pandas怎样新增数据列
Pandas怎样新增数据列? 在进行数据分析时,经常需要按照一定条件创建新的数据列,然后进行进一步分析. 直接赋值 df.apply方法 df.assign方法 按条件选择分组分别赋值 0.读取csv ...
- pandas常用操作详解——pandas的去重操作df.duplicated()与df.drop_duplicates()
df.duplicated() 参数详解: subset:检测重复的数据范围.默认为数据集的所有列,可指定特定数据列: keep: 标记哪个重复数据,默认为'first'.1.'first':标记重复 ...
- pandas常用操作详解——info()与descirbe()
概述 df.info():主要介绍数据集各列的数据类型,是否为空值,内存占用情况: df.describe(): 主要介绍数据集各列的数据统计情况(最大值.最小值.标准偏差.分位数等等). df.in ...
- pandas常用操作详解(复制别人的)——数据透视表操作:pivot_table()
原文链接:https://www.cnblogs.com/Yanjy-OnlyOne/p/11195621.html 一文看懂pandas的透视表pivot_table 一.概述 1.1 什么是透视表 ...
- 5.pandas新增数据列
有的时候,表格自带的数据根本没有办法满足我们,我们经常会新加一列数据或者对原有的数据进行修改 还是接着上篇文章的数据进行操作 直接赋值 我想算一下每一天的温差 df.loc[:, 'wencha'] ...
- Pandas常用操作 - 删除指定行/指定列
1. 删除指定行 new_df = df.drop(index='行索引') new_df = df.drop('行索引', axis='index') new_df = df.drop('行索引', ...
- pandas常用操作详解——数据运算(一)
表与表之间的数据运算 #构建数据集df1=pd.DataFrame(np.random.random(32).reshape(8,4),columns=list('ABCD')) df2=pd.Dat ...
- 3-10 Pandas 常用操作
1.构造数据 In [1]: import pandas as pd data=pd.DataFrame({'group':['a','a','a','b','b','b','c','c','c' ...
随机推荐
- CSS基础 transform属性的基本使用 移动 旋转 缩放
1.实现元素位移效果 语法:transform:translate(x轴水平移动距离,Y轴垂直移动距离) 取值:正负都可以 取值方式:数字+px 百分比 :参照自己本的盒子的百分比 比如:本身自己的宽 ...
- pytest动态添加命令行参数并获取(钩子函数:pytest_addoption)
考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行: 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑: 上面的场景我们都可以通过" ...
- linux中vim编辑器的翻页命令
Linux jdk查看文件的最后一行 输入$回车 查看文件的第一行 输入0或者1回车 向前翻页 Ctrl + f f为forw ...
- a href 鼠标滑过变成小手图标
<a id="l05" style="cursor:pointer;text-decoration:none;" href="<%=pat ...
- Go语言系列之并发编程
Go语言中的并发编程 并发与并行 并发:同一时间段内执行多个任务(宏观上并行,微观上并发). 并行:同一时刻执行多个任务(宏观和微观都是并行). Go语言的并发通过goroutine实现.gorout ...
- 利用python绘制分析路易斯安那州巴吞鲁日市的人口密度格局
前言 数据来源于王法辉教授的GIS和数量方法,以后有空,我会利用python来实现里面的案例,这里向王法辉教授致敬. 绘制普查人口密度格局 使用属性查询提取区边界 import numpy as np ...
- 贝塞尔曲线(面)二三维可视化(Three+d3)
贝塞尔曲线(面)二三维可视化(Three+d3) 在学完 games101 几何后开始实践,可视化贝塞尔曲线 我想实现三维的贝塞尔曲线,用 threejs,但是 threejs 控制太麻烦了,因此,我 ...
- 推荐一个最懂程序员的google插件
0.前言 很多人应该也和我一样,使用google浏览器时,它的主页是真不咋地,太单调了,用起来贼不爽,想整它很久了 一打开就是上面的样子,让我看起来真心真心不爽 当然:为了这个不关技术的瞎犊子事情,曾 ...
- Linux防止文件被误删除或修改
chattr简介 Linux没有回收站,一旦文件或文件夹被误删除,要寻找回来很麻烦,不如事先对一些重要的文件做一些保护,这时我们需要一个命令chattr,其使用格式为 chattr 操作符 属性 文件 ...
- 【刷题-LeetCode】148 Sort List
Sort List Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4 ...