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。
添加回答
举报