首页 > 解决方案 > 对 Pandas DataFrame.apply() 的困惑

问题描述

假设我编写了代码:

df2 = pd.DataFrame(np.random.randint(1,5,4).reshape((2,2)), columns=['A', 'B'])
print("dataframe: \n", df2)
print("mean: \n", df2.mean(0))
df2 = df2.apply(lambda x: x - [1, 2], axis=0)
print("altered df2: \n", df2)

它给了我结果:

dataframe: 
    A  B
0  1  1
1  2  2
mean: 
 A    1.5
B    1.5
dtype: float64
altered df2: 
    A  B
0  0  0
1  0  0

所以首先,我要求它给我一个平均数axis=0。在我看来,这意味着将每一行视为一个向量并找到这些向量的平均值。熊猫似乎同意我的这一点!

但是,我随后使用该DataFrame.apply()函数,并再次指定axis=0. 在这里,我希望相同的逻辑可以工作,即对每一行执行一个操作。在这种情况下lambda x: x - [1, 2]。我期望的结果是:

    A  B
0  0  -1
1  1  0

但是,当我指定axis=0(行)时,它实际上对列进行了操作。

我在使用 pandas 时遇到了困难,特别是围绕它如何索引行和列,这进一步增加了混乱。就目前而言,每次我认为我了解事情的运作方式时,我都会发现我错了,所以我的大脑中没有任何东西。我正在寻求一种简单的方法来思考这些东西,这样它就可以留在我有阅读障碍的小脑袋里。

标签: pythonpandasdataframe

解决方案


推荐阅读