当前位置: 首页 > article >正文

df.transform函数的使用

目录

  • df.transform函数介绍
  • transform函数的使用:
    • 1.转换数值
    • 2.合并分组结果
    • 3.过滤数据
    • 4.结合分组处理缺失值

df.transform函数介绍

df.transform()是Pandas中的一个函数,用于对DataFrame中的数据进行转换操作。它可以接受一个函数作为参数,并将这个函数应用到DataFrame的每个元素上,然后返回一个新的DataFrame,其中的元素都是经过这个函数转换后的结果。

基本语法如下:

df.transform(func, axis=0, *args, **kwargs)

参数说明:

  1. func:要应用的函数,可以是一个函数,也可以是一个字符串(表示一个函数名)。
  2. axis:指定函数应用的方向,0表示沿着列的方向应用函数,1表示沿着行的方向应用函数。
  3. *args和**kwargs:可选参数,用于传递给func函数的其他参数。

transform函数的使用:

transform有4个比较常用的功能,总结如下:转换数值,合并分组结果,过滤数据,结合分组处理缺失值

1.转换数值

import pandas as pd
import numpy as np
df = pd.DataFrame({
  'restaurant_id': [101,102,103,104,105,106,107,108],
  'address': ['A','B','C','D', 'E', 'F', 'G','H'],
  'city': ['London','London','London','Oxford','Oxford', 'Durham', 'Durham','London'],
  'sales': [10,500,48,12,21,22,14,10]
})
print(df)
def plus_10(x):
    return x+10
#df['sales'] =df['sales'].transform(plus_10)
df['sales'] = df['sales'].transform(lambda x: x+10)
print(df)


   restaurant_id address    city  sales
0            101       A  London     10
1            102       B  London    500
2            103       C  London     48
3            104       D  Oxford     12
4            105       E  Oxford     21
5            106       F  Durham     22
6            107       G  Durham     14
7            108       H  London     10
   restaurant_id address    city  sales
0            101       A  London     20
1            102       B  London    510
2            103       C  London     58
3            104       D  Oxford     22
4            105       E  Oxford     31
5            106       F  Durham     32
6            107       G  Durham     24
7            108       H  London     20

2.合并分组结果

import pandas as pd
import numpy as np
df = pd.DataFrame({
  'restaurant_id': [101,102,103,104,105,106,107,108],
  'address': ['A','B','C','D', 'E', 'F', 'G','H'],
  'city': ['London','London','London','Oxford','Oxford', 'Durham', 'Durham','London'],
  'sales': [10,500,48,12,21,22,14,10]
})
print(df)

df['city_total_sales'] = df.groupby('city')['sales'].transform('sum')
df['pct'] = df['sales'] / df['city_total_sales']
df['pct'] = df['pct'].apply(lambda x: format(x, '.2%'))
print(df)

   restaurant_id address    city  sales
0            101       A  London     10
1            102       B  London    500
2            103       C  London     48
3            104       D  Oxford     12
4            105       E  Oxford     21
5            106       F  Durham     22
6            107       G  Durham     14
7            108       H  London     10
   restaurant_id address    city  sales  city_total_sales     pct
0            101       A  London     10               568   1.76%
1            102       B  London    500               568  88.03%
2            103       C  London     48               568   8.45%
3            104       D  Oxford     12                33  36.36%
4            105       E  Oxford     21                33  63.64%
5            106       F  Durham     22                36  61.11%
6            107       G  Durham     14                36  38.89%
7            108       H  London     10               568   1.76%

3.过滤数据

import pandas as pd
import numpy as np
df = pd.DataFrame({
  'restaurant_id': [101,102,103,104,105,106,107,108],
  'address': ['A','B','C','D', 'E', 'F', 'G','H'],
  'city': ['London','London','London','Oxford','Oxford', 'Durham', 'Durham','London'],
  'sales': [10,500,48,12,21,22,14,10]
})
print(df)
print(df[df.groupby('city')['sales'].transform('sum') > 40])

   restaurant_id address    city  sales
0            101       A  London     10
1            102       B  London    500
2            103       C  London     48
3            104       D  Oxford     12
4            105       E  Oxford     21
5            106       F  Durham     22
6            107       G  Durham     14
7            108       H  London     10
   restaurant_id address    city  sales
0            101       A  London     10
1            102       B  London    500
2            103       C  London     48
7            108       H  London     10

4.结合分组处理缺失值

import pandas as pd
import numpy as np
df = pd.DataFrame({
    'name': ['A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
    'value': [1, np.nan, np.nan, 2, 8, 2, np.nan, 3]
})

print(df)

df['value'] = df.groupby('name').transform(lambda x: x.fillna(x.mean()))

print(df)

  name  value
0    A    1.0
1    A    NaN
2    B    NaN
3    B    2.0
4    B    8.0
5    C    2.0
6    C    NaN
7    C    3.0
  name  value
0    A    1.0
1    A    1.0
2    B    5.0
3    B    2.0
4    B    8.0
5    C    2.0
6    C    2.5
7    C    3.0

http://www.kler.cn/a/379630.html

相关文章:

  • 基于SpringBoot+Gpt个人健康管家管理系统【提供源码+答辩PPT+参考文档+项目部署】
  • yolo系列各种环境配置运行
  • 1565412310
  • sql server 文件备份恢复
  • Go语言常见数据结构实现原理
  • 「C/C++」C/C++标准库 之 #include<cstdlib> 通用工具函数库
  • Rust 力扣 - 1423. 可获得的最大点数
  • Java 用户随机选择导入ZIP文件,解压内部word模板并入库,Windows/可视化Linux系统某麒麟国防系统...均可适配
  • 江协科技STM32学习- P30 FlyMCU串口下载STLink Utility
  • 【基础】os模块
  • 2024年10款专业的PDF合并工具帮你实现高效办公。
  • 使用 Github 进行项目管理
  • Vue中props和data的优先级哪个更高?
  • 联丰策略股票交易市场上周五股票ETF市场紫金净流入68亿元
  • 通过自定义指令实现图片懒加载
  • 在VScode中配置C_C++环境
  • 使用nvm切换node版本失败
  • Python 一维列表基础语法
  • LM Head weights;ChatGPT-3词汇量:175,000;llama7b 词汇量,词嵌入维度:4096
  • 【LeetCode】移除链表中等于设定值的元素、反转链表
  • 创维E900-S_华为EC6108V9_v9u_海思hi3798mv100华为系统优盘刷机固件包
  • CesiumJS 案例 P20:监听鼠标滚轮、监听鼠标左键按下与松开、监听鼠标右键按下与松开、监听鼠标左击落点
  • Linux:线程安全的单例模式
  • 进程的概念
  • Vue学习之路16----pinia
  • 家具产品的耐用性新标准,矫平机为家具制造提供新保障