3 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個贊
Axis 代表您想要指向的軸,0 表示行,1 表示列。因此,在此示例中,您在 Age 和 P 類列的行上使用 impute_age 函數(shù)。

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個贊
這是因?yàn)槟诹卸皇切兄袘?yīng)用了該函數(shù)。
例子:
data = pd.DataFrame([[np.NaN, 1], [np.NaN, 2], [np.NaN, 1]], columns=["age", "pclass"])
print(data)
輸出
age pclass
0 NaN 1
1 NaN 2
2 NaN 1
軸 = 0
data[['age','pclass']].apply(print, axis=0)
輸出
0 None
1 None
2 None
Name: age, dtype: object
0 1
1 2
2 1
Name: pclass, dtype: object
//Iterate through columns
軸 = 1
data[['age','pclass']].apply(print, axis=1)
輸出
age None
pclass 1
Name: 0, dtype: object
age None
pclass 2
Name: 1, dtype: object
age None
pclass 1
Name: 2, dtype: object
//Iterate through the row

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個贊
axis 屬性意味著您沿著該軸應(yīng)用函數(shù):
column1 column2
+-------+---------+
row1 | | | ----> axis1
+-------+---------+
row2 | | |
+-------+---------+
|
V
axis 0
如果您考慮這樣的函數(shù):
def sum(cols):
s = 0
for i in cols:
s +=i
return s
并將其應(yīng)用到數(shù)據(jù)框 df:
total_sum = df.apply(sum, axis = 0)
它將采用第一列 1 并按照上面草圖中箭頭(軸 0)的方向逐行應(yīng)用函數(shù)。接下來它將采用下一個column2,依此類推。最后您將得到每列的總和。
對于 axis = 1,它將采用 row1 并按列應(yīng)用該函數(shù)。然后將需要 row2 等等。結(jié)果,您將獲得每行的總和。
在您的軸等于 0 的示例中,它將“年齡”列作為系列傳遞給您的 impute_age 函數(shù)。然后,您僅訪問該系列的前兩個值(行)(cols[0] 和 cols[1])。下一欄也會發(fā)生同樣的情況。那不是你想要的。
相反,您希望將每一行傳遞給函數(shù)并訪問列,因此您必須指定 axis = 1。
添加回答
舉報(bào)