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' ...
随机推荐
- UI自动化,通过Xpath结合父类、同级元素,查找到唯一的元素定位
UI自动化,通过Xpath定位的总结 当页面展示的内容的html布局格式一样,只能第几个控件的绝对定位来区分时,如果后面有变更控件的顺序,就会导致找不到这个元素,维护成本较高,可以尝试用其他的方式,比 ...
- linux(CentOS7) 之 MySQL 5.7.30 下载及安装
一.下载 1.百度搜索mysql,进入官网(或直接进入官网https://www.mysql.com) 2.选择 downloads 3.翻到最下面,选择MySQL Community (GPL) D ...
- 谈谈 StringBuffer 和 StringBuilder 的历史故事
1.前言 众所周知,StringBuffer 是线程安全的 ,而StringBuilder 不是线程安全的 ,但是 StringBuilder 速度会更快. 事实上 作为一个字符串拼接 方法 ,在线 ...
- TensorRT 开始
TensorRT 是 NVIDIA 自家的高性能推理库,其 Getting Started 列出了各资料入口,如下: 本文基于当前的 TensorRT 8.2 版本,将一步步介绍从安装,直到加速推理自 ...
- Redisson-关于使用订阅数问题
一.前提 最近在使用分布式锁redisson时遇到一个线上问题:发现是subscriptionsPerConnection or subscriptionConnectionPoolSize 的大小不 ...
- Flowable实战(七)用户和组
在流程中,最重要的参与者是用户.流程定义了任务何时需要用户参与,什么用户可以参与. 组可以理解为我们常说的角色. Flowable中内置了一套简单的对用户和组的支持,身份管理(IDM ID ...
- 通过Javascript实现把数组里的内容以表格方式呈现到页面从
一.把数组里的内容呈现到页面从,以表格方式 <!doctype html> <html> <head> <meta charset="utf-8&q ...
- C# 基本控件使用练习
自己设计并编写一个 Windows 应用程序,要求用到 TextBox.GroupBox.RadioButton.CheckBox.ComboBox.ListBox 控件. 代码如下: 页面1: us ...
- 【记录一个问题】golang神坑,明明返回了接口指针类型的nil值,却无法用if判断
先看看导致异常的代码: package main import ( "fmt" "log" ) type MyError1 struct{ MyErrorCod ...
- Cesium源码剖析---Clipping Plane
之前就一直有写博客的想法,别人也建议写一写,但一直没有动手写,自己想了一下原因,就一个字:懒.懒.懒.为了改掉这个毛病,决定从今天开始写博客了,一方面对自己掌握的知识做一个梳理,另一方面和大家做一个交 ...