2 回答

TA貢獻1784條經驗 獲得超7個贊
apply
您可以在列上使用,但也可以在數據框本身上使用它。如果您使用數據框,則需要提供一個軸(行或列)。
f = lambda row: row['Owner'] if (row['Color'] == 'Blue') & (row['Size'] > 50) else null
df['Check'] = df.apply(f,axis=1)

TA貢獻1877條經驗 獲得超1個贊
這是否有效(無lambda功能):
df['Check'] = df['Owner'][(df['Color'] == 'Blue') & (df['Size'] > 50)]
我試過了
df = pd.DataFrame([['Blue', 25, 'Owner1'],
['Blue', 55, 'Owner2'],
['Green', 100, 'Owner3']],
columns=['Color', 'Size', 'Owner'])
并得到以下結果
Color Size Owner Check
0 Blue 25 Owner1 NaN
1 Blue 55 Owner2 Owner2
2 Green 100 Owner3 NaN
(使用apply-function時lambda只能采用一個參數。)
說明:(df['Color'] == 'Blue')并根據條件(df['Size'] > 50)創建帶有True/值的系列(您可以打印它們)。False兩個系列都通過邏輯AND(使用&)組合成一個新系列,還包含True/False值(現在根據 -AND組合條件)。最后,該列df['Owner']獲取該系列并保留該系列具有Trueals 值的所有行,并用 填充其余部分NaN。
添加回答
舉報