如何在熊猫中引用数组中的顺序值

我试图在满足两个条件时在数据框中创建一个新列,该列会吐出 1:(1) 相邻列中的单元格大于 0 和 (2) 相邻列中的单元格,前一行是也大于 0。这是代码:


def rule(x, y):

if x > 0 and y > 0:

     return 1

else:

     return 0


df = 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 函数的样子。


慕斯王
浏览 228回答 1
1回答

泛舟湖上清波郎朗

使用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'] > 0df['new'] = df.apply(rule, axis =  1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python