首页 > 其他分享 >pandas-自定义函数映射

pandas-自定义函数映射

时间:2023-09-16 10:45:26浏览次数:47  
标签:映射 自定义 df two DataFrame print apply data1 pandas

自定义函数

目录

自定义操作map()

map,用于Series实现每个值得处理

map() 是一个Series的函数,map()将一个自定义函数应用于Series结构中的每个元素(elements)

无法实现对列行的整体统计

import pandas as pd
df = pd.DataFrame({'key1' : ['a', 'a', 'b', 'b', 'a'],
                   'key2' : ['one', 'two', 'one', 'two', 'one'],
                   'data1' : np.arange(5),
                   'data2' : np.arange(5,10)})
print(df)
#   key1 key2  data1  data2
# 0    a  one      0      5
# 1    a  two      1      6
# 2    b  one      2      7
# 3    b  two      3      8
# 4    a  one      4      9

#lambda在这里其实是在定义一个简单的函数,一个没有函数名的函数。
df['data1'] = df['data1'].map(lambda x : "%.3f"%x) 
print(df)

#   key1 key2  data1  data2
# 0    a  one  0.000      5
# 1    a  two  1.000      6
# 2    b  one  2.000      7
# 3    b  two  3.000      8
# 4    a  one  4.000      9

自定义操作apply()

apply() 函数在DataFrame和Series对象中都可以使用。它将一个函数应用到DataFrame或Series的每一个元素。如果在DataFrame中使用,函数应该按照列或行(取决于axis参数)的元素进行操作

apply()是Pandas DataFrame和Series对象的一个方法,它允许你在DataFrame或Series的每一个元素上应用一个函数

Series.apply(func) 函数参数是每个值
DataFrame.apply(func) 函数参数是Series
DataFrame.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)

func :      function作用于每一列或行
axis        函数所应用的轴 0,1,默认为0
broadcast   可选,仅与聚合函数相关
raw 
reduce 

返回值
applied : Series 或 DataFrame

对指定轴的操作,聚合,统计

import pandas as pd

data = {
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
}
df = pd.DataFrame(data)

#计算每一列的平均值
result = df.apply(lambda x: x.mean())
print(result)
#A    2.0
#B    5.0
#C    8.0
#dtype: float64

# 计算每一行的最大值
result = df.apply(lambda x: x.max(), axis=1)
print(result)
#0    7
#1    8
#2    9
#dtype: int64

对每个数值进行转换

import pandas as pd

data = {
    'A': [1, 2, 3],
    'B': [4, 5, 6],
    'C': [7, 8, 9]
}
df = pd.DataFrame(data)

# 计算每一个数值的平方
result = df.apply(lambda x: x*x)
print(result)
#    A   B   C
# 0  1  16  49
# 1  4  25  64
# 2  9  36  81

#对每一列进行归一化,使得每一列的最小值为 0,最大值为 1
result = df.apply(lambda x: (x - x.min()) / (x.max() - x.min()))
print(result)
#     A    B    C
#0  0.0  0.0  0.0
#1  0.5  0.5  0.5
#2  1.0  1.0  1.0

def subtract_custom_value(x, custom_value):
     return x - custom_value

result=df.apply(subtract_custom_value, args=(5,))
print(result)
#    A  B  C
# 0 -4 -1  2
# 1 -3  0  3
# 2 -2  1  4

import pandas as pd
import numpy as np

df = pd.DataFrame({'key1' : ['a', 'a', 'b', 'b', 'a'],
                   'key2' : ['one', 'two', 'one', 'two', 'one'],
                   'data1' : np.arange(5),
                   'data2' : np.arange(5,10)})
print(df)
#   key1 key2  data1  data2
# 0    a  one      0      5
# 1    a  two      1      6
# 2    b  one      2      7
# 3    b  two      3      8
# 4    a  one      4      9

df.loc['total'] = df[['data1','data2']].apply(lambda x : x.sum(),axis=0)
print(df)
#       key1 key2  data1  data2
# 0        a  one    0.0    5.0
# 1        a  two    1.0    6.0
# 2        b  one    2.0    7.0
# 3        b  two    3.0    8.0
# 4        a  one    4.0    9.0
# total  NaN  NaN   10.0   35.0

def stradd(x):
    x=copy.deepcopy(x)
    x=x.tolist()
    x=[str(i) for i in x]
    return "".join(x)

df['data3'] = df.apply(stradd,axis=1)
print(df)
#   key1 key2  data1  data2   data3
# 0    a  one      0      5  aone05
# 1    a  two      1      6  atwo16
# 2    b  one      2      7  bone27
# 3    b  two      3      8  btwo38
# 4    a  one      4      9  aone49

自定义操作applymap()

只用于DataFrame,处理数据的每个元素

applymap()函数是Pandas DataFrame对象的一个方法,它允许你在DataFrame的每一个元素上应用一个函数,就像apply()一样。
但是,applymap()还会保留输入的DataFrame的结构,即它的轴标签和索引
import pandas as pd
import numpy as np

df = pd.DataFrame({'key1' : ['a', 'a', 'b', 'b', 'a'],
                   'key2' : ['one', 'two', 'one', 'two', 'one'],
                   'data1' : np.arange(5),
                   'data2' : np.arange(5,10)})
print(df)
#   key1 key2  data1  data2
# 0    a  one      0      5
# 1    a  two      1      6
# 2    b  one      2      7
# 3    b  two      3      8
# 4    a  one      4      9

def  addA(x):
    return "A" + str(x )
df.applymap(addA)
print(df)

#        key1  key2  data1  data2
# 0        Aa  Aone   A0.0   A5.0
# 1        Aa  Atwo   A1.0   A6.0
# 2        Ab  Aone   A2.0   A7.0
# 3        Ab  Atwo   A3.0   A8.0
# 4        Aa  Aone   A4.0   A9.0
# total  Anan  Anan  A10.0  A35.0

参考资料

https://blog.csdn.net/maymay_/article/details/80229053

https://www.cnblogs.com/BlairGrowing/p/15866516.html

https://www.cjavapy.com/article/303/

标签:映射,自定义,df,two,DataFrame,print,apply,data1,pandas
From: https://www.cnblogs.com/tian777/p/17706396.html

相关文章

  • pandas-排序
    pandas-排序目录pandas-排序sort_values()值排序sort_index()标签排序nlargest()rank()排名参考资料Pandas提供了多种排序数据的方法sort_values()值排序作用:既可以根据列数据,也可根据行数据排序DataFrame.sort_values(by,axis=0,ascending=True,inplace=False,kind='qu......
  • java 加密 AES加密 加盐加密 自定义加盐 自定义密码加密
    效果: 项目下载地址:AESDemo 地址二 提取码:6666                         参考:http://www.asfx.xyz/p/e3124067382f4c6a9fb1b43fc799b5e5 ......
  • pandas使用1
    涉及的几个重要的类:pandas.core.frame.DataFrame:表示表格数据pandas.core.series.Series:表示一组数据 data.xlsx数据 importpandasaspddf=pd.read_excel("./data.xlsx",index_col=None)#index_col表示哪一列作为索引列,默认是额外加一个列,用行号作为索引p......
  • ES-ik分词器----常用映射类型
    测试ik分词器:POST     http://localhost:9200/_analyzeBody的JSON数据1:{"text":"测试分词器,后面是测试内容:springcloud实战","analyzer":"ik_max_word"}JSON测试数据2:{"text":"测试分词器,后面是测试内容:springcloud实战","......
  • Vue学习五:自定义指令、插槽
    一、自定义指令自定义指令:自己定义的指令,可以封装一些dom操作,扩展额外功能全局注册语法Vue.directive('指令名',{"inserted"(el){//可以对el标签,扩展额外功能}})ViewCode局部注册语法directives:{"指令名":{"inserted"(el){......
  • 在 Java 中自定义反序列化:实现可序列化接口
    实现可串行化接口的功能Serialized接口用于管理Java默认序列化机制使用的序列化和反序列化过程。Java虚拟机(JVM)通过该类的Serialized接口实现来指示该类是否具有可序列化和反序列化的能力。该接口不仅有利于序列化,而且还使开发人员可以自由地更改默认的反序列化行为。由......
  • 虚拟内存如何与物理内存映射
    转自https://www.cnblogs.com/binlovetech/p/17571929.html笔者之前在自己的专栏《聊聊Linux内核》 里通过大量的篇幅写了一个系列关于内存管理相关的文章,在这个系列文章中,笔者分别通过虚拟内存管理和物理内存管理两个角度算是把Linux内存管理子系统的全貌给大家呈现了出来......
  • 自定义类型—枚举,联合(结构体,枚举,联合)3
    枚举类型是可以赋予初值的,即使不赋予,系统默认也会赋予初值,从0开始自增1。枚举类型的大小是系统定义的,一般为一个整型。枚举是创建一种类型,一种枚举类型,define只是定义的标识符,系统计算的时候还是按照赋予的值来进行运算的。结构体创建的也是一种类型。enumColor{ RED, YELLOW,......
  • 低代码开发平台 一款自定义软件开发平台源码
    低代码PaaS平台源码 采用对象方式实现字段、API的字段类型,引入RPA实现表自动化建模;再使用选择方式对地段功能进行选择定义甚至可以插入代码进行自定义。数字化转型的迫切需求随着数字科技的发展,各行各业对于新技术解决方案的需求也在逐日递增,非技术人员也开始被要求在短时间内构建......
  • SpringBoot 自定义starter汇总
    1、SpringBootstarter机制SpringBoot中的starter是一种非常重要的机制,能够抛弃以前繁杂的配置,将其统一集成进starter,应用者只需要在maven中引入starter依赖,SpringBoot就能自动扫描到要加载的信息并启动相应的默认配置。starter让我们摆脱了各种依赖库的处理,需要配置各种信息......