我是靠谱客的博主 从容季节,最近开发中收集的这篇文章主要介绍pandas.DataFrame.apply,DataFrame.applymap,Series.mapapplyapplymapmapReferences,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • apply
  • applymap
  • map
  • References


apply

我们想在 DataFrame 的每行或者每列上都执行某个函数,可以使用 DataFrame 的 apply 方法。

例如,我们想计算下面 DataFrame 每列的最大值最小值之差:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'),
index=['Baidi', 'Wuyi', 'Changan', 'Changshan'])
print(df)
"""
b
d
e
Baidi
1.671894
0.902370
0.008920
Wuyi
-0.368150
0.265574
1.538348
Changan
-0.491342 -0.073567
0.257416
Changshan
1.703614
1.007506 -1.837523
"""
f = lambda x: x.max() - x.min()
df.apply(f)
"""
b
2.194956
d
1.081073
e
3.375870
dtype: float64
"""

结果会返回一个 Series,其 indexdfcolumn

applyaxis 参数,默认为 0,即对每列做运算,如果将其指定为 1 或者 ‘columns’,则会对每行做运算:

df.apply(f, axis='columns')
"""
Baidi
1.662974
Wuyi
1.906497
Changan
0.748758
Changshan
3.541137
dtype: float64
"""

传入 apply 的函数不是必须返回标量值的,也可以返回类似 Series 这样的对象:

def f(x):
return pd.Series([x.min(), x.max()], index=['min', 'max'])
df.apply(f)
"""
b
d
e
min -0.491342 -0.073567 -1.837523
max
1.703614
1.007506
1.538348
"""

大多数常见的统计方法(例如 summean)都是 DataFrame 的方法,因此除非我们需要做一些特别的运算,否则并不需要使用 apply 方法。

Series 也有 apply 方法,用法大致相同,且没有axis 参数。


applymap

如果我们想对 DataFrame 中的每个元素都运行我们自己定义的函数,可以使用 applymap 方法。例如:

format = lambda x: '%.2f' % x
df.applymap(format)
"""
b
d
e
Baidi
1.67
0.90
0.01
Wuyi
-0.37
0.27
1.54
Changan
-0.49
-0.07
0.26
Changshan
1.70
1.01
-1.84
"""

map

Series 中对应 applymap 的方法为 map

df['e'].map(format)
"""
Baidi
0.01
Wuyi
1.54
Changan
0.26
Changshan
-1.84
Name: e, dtype: object
"""

References

Python for Data Analysis, 2 n d ^{rm nd} nd edition. Wes McKinney.

最后

以上就是从容季节为你收集整理的pandas.DataFrame.apply,DataFrame.applymap,Series.mapapplyapplymapmapReferences的全部内容,希望文章能够帮你解决pandas.DataFrame.apply,DataFrame.applymap,Series.mapapplyapplymapmapReferences所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部