【发布时间】:2021-08-10 08:44:52
【问题描述】:
我在 pandas 中使用 .apply() 方法。使用axis=0 和axis=1 时,我得到相同的结果。
当使用 axis=0 时,我希望结果是一个包含四个元素(索引 A、B、C、D)的系列。谁能告诉我为什么轴参数在这种情况下不起作用?
我在下面添加了一个可重现的示例。 注意:我知道这只是一个简单的乘法,可以简单地使用方法 .mul() 或 * 运算符来完成,但我在这里使用是为了让事情变得简单。
from pandas import util
df = util.testing.makeDataFrame()
df.head()
| A | B | C | D | |
|---|---|---|---|---|
| Z82iXpl5s4 | 0.6031287648192426 | -0.8271966886193748 | 1.8008948949143067 | 2.3722926060057237 |
| MIFRqMYUeQ | 0.2607658354228718 | -0.2475715926867064 | 0.9548749309163952 | 2.682513736796777 |
| F5qTLNGXAL | -1.0716656707592347 | -0.637969249754201 | -0.6155681669722803 | 1.24399654282517 |
| 5J4v4avVEB | -0.9685885791255543 | -0.6735886163824997 | -0.8065978319692303 | 0.5227282727367413 |
| uEeRVYkeWU | -0.6661417878211171 | -0.15444679388555943 | -0.06476868167309932 | -0.8541859423835071 |
df.apply(lambda x: x * 9, axis=0).head()
| A | B | C | D | |
|---|---|---|---|---|
| Z82iXpl5s4 | 5.428158883373183 | -7.444770197574373 | 16.20805405422876 | 21.35063345405151 |
| MIFRqMYUeQ | 2.3468925188058463 | -2.2281443341803575 | 8.593874378247557 | 24.142623631170995 |
| F5qTLNGXAL | -9.644991036833112 | -5.741723247787809 | -5.540113502750523 | 11.195968885426531 |
| 5J4v4avVEB | -8.717297212129989 | -6.062297547442497 | -7.259380487723073 | 4.704554454630672 |
| uEeRVYkeWU | -5.995276090390054 | -1.3900211449700348 | -0.5829181350578939 | -7.687673481451564 |
df.apply(lambda x: x * 9, axis=1).head()
| A | B | C | D | |
|---|---|---|---|---|
| Z82iXpl5s4 | 5.428158883373183 | -7.444770197574373 | 16.20805405422876 | 21.35063345405151 |
| MIFRqMYUeQ | 2.3468925188058463 | -2.2281443341803575 | 8.593874378247557 | 24.142623631170995 |
| F5qTLNGXAL | -9.644991036833112 | -5.741723247787809 | -5.540113502750523 | 11.195968885426531 |
| 5J4v4avVEB | -8.717297212129989 | -6.062297547442497 | -7.259380487723073 | 4.704554454630672 |
| uEeRVYkeWU | -5.995276090390054 | -1.3900211449700348 | -0.5829181350578939 | -7.687673481451564 |
【问题讨论】:
-
为了更好地了解您有什么问题或意外,我正在复制 apply 函数的文档。
axis{0 or ‘index’, 1 or ‘columns’}, default 0 Axis along which the function is applied: 0 or ‘index’: apply function to each column. 1 or ‘columns’: apply function to each row.我认为您的测试没有什么意外的。由于数据框的索引是第一列 -
“当使用 axis=0 时,我希望结果是一个包含四个元素(索引 A、B、C、D)的系列。”为什么?
-
我想我将 .apply() 与 .groupby().apply() 混淆了。我现在看到了。这就是为什么我期待一个包含四个元素的系列。