【发布时间】:2020-03-28 00:33:39
【问题描述】:
我有一个数据框:
df = pd.DataFrame({'col1': [1,2,3,4,5], 'col2':[1,2,3,4,5], 'col3':['a','b','c','d','e']})
我想创建一个新列,如果 col1 和 col2 等于 1,则它会说“是”,否则它会说“否”。
我尝试过使用 lambda 函数但没有成功:
df['win'] = df[['col1', 'col2']].apply(lambda x: 'Yes' if (x['col1'] == 1) & (x['col2'] == 1) else 'No')
有没有更好的方法来做到这一点?或对我所做的事情进行改进,使其有效。
【问题讨论】:
-
虽然你不应该对这个操作使用apply,但逻辑上你的apply是正确的。但是,您需要添加
axis=1作为参数,以便它知道逐行缓慢地进行计算:(