4. Pandas行列操作

news/2025/2/12 4:47:56/

4.1 新增列

4.1.1 assign

Pandas中的assign()函数不仅可以实现不改变原数据情况下新增列,而且可以同时新增多列,还可以配合链式操作使用一行代码完成多个新增列创建,使得代码非常整洁。

(1)函数

# 新增列Sex_map,映射male为0,female为1
df.assign(Sex_map=lambda x:x.Sex.map({'male':0, 'female':1}))df.assign(Sex_map=df['Sex'].map({'male':0, 'female':1})

(2)多列

新增多列时,按照前后顺序,后面列创建的计算过程中可以使用前面已创建的列。

df.assign(Sex_map=lambda x:x.Sex.map({'male':0, 'female':1}),Sex_age=lambda x:x.Sex_map*x.Age)

(3)链式

df.assign(Sex_map=lambda x:x.Sex.map({'male':0, 'female':1})).\assign(Sex_age=lambda x:x.Sex_map*x.Age)# 不同写法
(df.assign(Sex_map=lambda x:x.Sex.map({'male':0, 'female':1})).\ 		   assign(Sex_age=lambda x:x.Sex_map*x.Age)
)

4.2 插入列

4.2.1 insert

### 对Sex变量加工一个新的变量,并且插入到Sex变量之后
df.columns.get_loc('Sex')
--------------
4df.insert(loc=5,columns='Sex_map',value=df['Sex'].map({'male':0, 'female':1})

4.3 移除列

4.3.1 pop

pop( )可以移除指定列,但参数只接受一个列名,不能同时移除多列,并且在未找到要移除的列名还会提示报错。

df.pop('Sex_map')

4.3.2 difference(更好)

将不在列表中的列名全部筛选出来,然后再用列名筛选匹配的数据。

df[df.columns.difference(['Sex', 'Sex_map'])]

4.4 列转行

dic_0 = {'球队':['湖人', '勇士', '凯尔特人'],'球员':[['詹姆斯','戴维斯','里弗斯'],['库里','汤普森','格林'],['塔图姆','布朗','霍乐迪']]
}
df = pd.DataFrame(dic_0)

4.4.1 explode

(1)重置索引

df.explode('球员', ignore_index=True)     # ignore_index=True重置索引

(2)去重

df.explode('球员').drop_duplicates()

(3)格式调整

explode( )的column参数只能处理列表形式的对象,若原数据中没有explode可接受的格式,需要进行转换。

dic_0 = { '球队':['湖人', '勇士', '凯尔特人'], '球员':['詹姆斯,戴维斯,里弗斯', '库里,汤普森,格林', '塔图姆,布朗,霍乐迪']  } 
df = pd.DataFrame(dic_0)df['球员'] = df['球员'].str.split(',')

4.5 行转列

行转列是列转行的反向操作,即将多行数据合并后转成一个列表。

4.5.1 groupby聚合

(1)apply

df.groupby('球队').apply(lambda df:df['球员'].tolist().\reset_index().rename(columns={0:'球员'})

(2)agg

df.groupby(['球队'])['球员'].agg(list).to_frame().reset_index()


http://www.ppmy.cn/news/1231861.html

相关文章

selenium下载安装对应的chromedriver并执行

文章目录 selenium对应版本chrome驱动下载114以及之前的chrome版本119/120/121的chrome版本 chromedriver安装执行selenium代码 selenium Selenium是广泛使用的模拟浏览器运行的库,它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中&#xff0c…

如何使用GitHub托管代码(简易版)

打开IDEA并打开你的项目。 确保你已经安装了Git,并且在你的计算机上设置了Git的全局用户信息(用户名和电子邮箱地址)。这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。Git 首次安装必须设…

【力扣面试经典150题】(链表)K 个一组翻转链表

题目描述 力扣原文链接 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 你不能只…

电力工作记录仪、智能安全帽、智能布控球助力智能电网建设

电力行业的建设和发展是国家经济发展的重要支撑,而智能电网作为电力系统的重要组成部分,它的安全高效运行关乎到整个电力系统乃至民生的稳定和安全。为了加快国家经济的发展以及满足人们对电力的需求和用电可靠性的要求,国家早在十二规划中就…

〖大前端 - 基础入门三大核心之JS篇㊵〗- DOM事件监听及onxxx的使用

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

2216. 美化数组的最少删除数 --力扣 --JAVA

题目 给你一个下标从 0 开始的整数数组 nums ,如果满足下述条件,则认为数组 nums 是一个 美丽数组 : nums.length 为偶数对所有满足 i % 2 0 的下标 i ,nums[i] ! nums[i 1] 均成立 注意,空数组同样认为是美丽数组。…

听GPT 讲Rust源代码--src/librustdoc(2)

题图来自 Chromium项目将支持Rust编程语言[1] File: rust/src/librustdoc/html/render/search_index.rs 在Rust源代码中,rust/src/librustdoc/html/render/search_index.rs文件的作用是生成搜索索引,用于在Rust文档页面上进行关键字搜索。该文件实现了一…

level=warning msg=“failed to retrieve runc version: signal: segmentation fault“

安装docker启动后,发现里面没有runc版本信息 目前看是少了runc组件 那我们安装runc https://github.com/opencontainers/runc/releases/download/v1.1.10/runc.amd64 [rootlocalhost ~]# mv runc.amd64 /usr/bin/runc mv:是否覆盖"/usr/bin/runc&q…