我试图理解apply()
方法如何与序列和数据框架一起使用。
如下所示,当np.max()
函数与数据帧的apply()
方法一起使用时,它将返回每列的最大值。但是当与级数一起使用时,它只是返回级数。我的期望是它会返回这个级数的最大值。也就是说,结果与series.max()
相似。为什么apply()
在系列和数据框架上的表现不同?
import pandas as pd
import numpy as np
my_df = pd.DataFrame(np.random.randint(10, size=(4,3)), columns = list('ABC'))
my_df
Output:
A B C
0 2 4 7
1 9 6 6
2 4 4 8
3 8 8 1
df_max = my_df.apply(np.max)
df_max
Output:
A 9
B 8
C 8
dtype: int32
se_max = my_df['A'].apply(np.max)
se_max
Output:
0 2
1 9
2 4
3 8
Name: A, dtype: int32
默认情况下,apply
沿着对象的第一个维度工作。在数据框中,第一个维度是垂直的,apply
将函数应用于每一列。在序列中,第一个(也是唯一的)维度是水平的,apply
将该函数应用于每一行。