我是靠谱客的博主 从容季节,最近开发中收集的这篇文章主要介绍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,其 index
为 df
的 column
。
apply
有 axis
参数,默认为 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
"""
大多数常见的统计方法(例如 sum
和 mean
)都是 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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复