2 回答

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

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