我试图在满足两个条件时在数据框中创建一个新列,该列会吐出 1:(1) 相邻列中的单元格大于 0 和 (2) 相邻列中的单元格,前一行是也大于 0。这是代码:def rule(x, y):if x > 0 and y > 0: return 1else: return 0df = pd.DataFrame({ 'c1':[ 'high' ,'high', 'low', 'low'], 'c2': [0, 23, 17, 4]})df['new'] = df.apply(lambda x: rule(x['c2'], x['c2']), axis = 1)df.head()我不确定 lambda 函数中的数组引用应该如何编写,但这或多或少是我认为 lambda 函数的样子。
1 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
使用shift功能构造一个临时列,然后apply像这样使用:
df = pd.DataFrame({ 'c1':[ 'high' ,'high', 'low', 'low'], 'c2': [0, 23, 17, 4]})
df['c2_shifted'] = df['c2'].shift(1)
def rule(row):
return row['c2']>0 and row['c2_shifted'] > 0
df['new'] = df.apply(rule, axis = 1)
添加回答
举报
0/150
提交
取消