DataFrame.apply()

本文详细介绍了如何使用 Pandas 的 DataFrame 对象 apply 方法进行数据处理。包括如何使用 numpy 的 ufuncs 进行元素级操作,如何应用 Python 函数到 DataFrame 的每个元素,以及如何沿行或列应用函数。此外,还展示了如何返回 Series 和 MultiIndex Series 对象,并提供了多个应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:https://github.com/wk2014/PandasLearnClass/blob/master/DataFrame.Apply.ipynb


from pandas import DataFrame, Series
import pandas as pd
import numpy as np
frame = DataFrame(np.random.randn(4,3),columns=list('bde'),index=['Utah','Ohio','Texas','Oregon'])
frame
 bde
Utah1.011072-1.198988-0.794338
Ohio1.6114310.149355-1.316985
Texas0.671086-1.427144-1.764187
Oregon-0.496996-0.2794630.523360
 
#numpy 的 ufuncs(元素级数组方法) 可用于操作pandas 对象
np.abs(frame)


 bde
Utah1.0110721.1989880.794338
Ohio1.6114310.1493551.316985
Texas0.6710861.4271441.764187
Oregon0.4969960.2794630.523360
 
np.round(frame,decimals=2)


 bde
Utah1.01-1.20-0.79
Ohio1.610.15-1.32
Texas0.67-1.43-1.76
Oregon-0.50-0.280.52
 
#元素级python函数应用
format = lambda x: '%.2f' % x
frame.applymap(format)


 bde
Utah1.01-1.20-0.79
Ohio1.610.15-1.32
Texas0.67-1.43-1.76
Oregon-0.50-0.280.52
format
frame['e'].map(format)
Utah      -0.79
Ohio      -1.32
Texas     -1.76
Oregon     0.52
Name: e, dtype: object
沿行广播,操作列
#将函数应用到由各行或列所形成的一维数组上。==>frame.apply(f)
#1.返回元素值
f = lambda x: x.max() - x.min()
#沿行广播,操作列
frame.apply(f)
b    2.108427
d    1.576499
e    2.287547
dtype: float64
 
#沿列广播,操作行对象
frame.apply(f,axis=1)
Utah      2.210060
Ohio      2.928416
Texas     2.435273
Oregon    1.020355
dtype: float64
 
#return 普通 Series 对象
def f2(x):
    return Series([x.min(),x.max()],index=['min','max'])
frame.apply(f2)


 bde
min-0.496996-1.427144-1.764187
max1.6114310.1493550.523360
 
#return MultiIndex Series 对象
def f3(x):
    mIndex = pd.MultiIndex(levels=[['max','min'],['city','value']],labels=[[0,0,1,1],[0,1,0,1]])
    se= Series([x.argmax(),x.max(),x.argmin(),x.min()],index=mIndex)
    return se
frame.apply(f3)


  bde
maxcityOhioOhioOregon
value1.611430.1493550.52336
mincityOregonTexasTexas
value-0.496996-1.42714-1.76419
 
#return MultiIndex Series 对象
def f3(x):
    mIndex = pd.MultiIndex(levels=[['max','min'],['city','value']],labels=[[0,0,1,1],[0,1,0,1]])
    se= Series([x.argmax(),x.max(),x.argmin(),x.min()],index=mIndex)
    return se
frame.apply(f3).unstack()


 bde
 cityvaluecityvaluecityvalue
maxOhio1.61143Ohio0.149355Oregon0.52336
minOregon-0.496996Texas-1.42714Texas-1.76419

转载于:https://www.cnblogs.com/ziheIT/p/9050813.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值