嘗試使用 lambda 從 DatraFrame 中減去一個常量陣列。
這是我的資料幀d:
import pandas as pd
d = pd.DataFrame()
d['x'] = pd.Series([1, 2, 3, 4, 5, 6])
d['y'] = pd.Series([11, 22, 33, 44, 55, 66])
按預期作業的經典回圈方法:
transformed = pd.DataFrame(columns=('x', 'y'))
for index, row in d.iterrows():
transformed.loc[index] = [row[0] 5, row[1] 10]
print(transformed)
產生:
x y
0 6 21
1 7 32
2 8 43
3 9 54
4 10 65
5 11 76
這是lambda版本:
print(d.apply(lambda x: x [5, 10]))
但是,正在引發錯誤: ValueError: operands could not be broadcast together with shapes (6,) (2,)
閱讀Pandas 檔案后,我明白我的 lambda 方法應該有效。為什么不起作用?
uj5u.com熱心網友回復:
如果列數與串列長度相同,則最簡單的是:
print(d [5, 10])
x y
0 6 21
1 7 32
2 8 43
3 9 54
4 10 65
5 11 76
如果有多個按串列選擇的列,則串列的長度必須相同:
print(d[['x','y']] [5, 10])
uj5u.com熱心網友回復:
apply自動按列axis進行,默認情況下引數設定為 0。
您需要指定axis=1它將按行計算:
>>> d.apply(lambda x: x [5, 10], axis=1)
x y
0 6 21
1 7 32
2 8 43
3 9 54
4 10 65
5 11 76
>>>
但是在這種情況下,您apply無論如何都不需要:
>>> d [5, 10]
x y
0 6 21
1 7 32
2 8 43
3 9 54
4 10 65
5 11 76
>>>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324054.html
