给定一个dataframe df,我希望根据前n行(例如前3行)中的值为每行生成一个新的变量/列。
例如,给定以下内容:
输入
A B C
10 2 59.4
53 3 71.5
32 2 70.4
24 3 82.1
计算D:如果在C中的实际行或C中的前3行中有2个或更多的单元格> 70,则为1,否则为0
输出
A B C D
10 2 59.4 0
53 3 71.5 0
32 2 70.4 1
24 3 82.1 1
在熊猫里我该怎么做呢?
发布于 2018-07-28 07:12:41
IIUC,应该使用rolling
并在apply
中构建逻辑
window = 3
df.C.rolling(window).apply(lambda s: 1 if (s>=70).size >= 2 else 0)
0 NaN
1 NaN
2 1.0
3 1.0
您还可以使用fillna
将NaN
%s转换为0
.fillna(0)
0 0.0
1 0.0
2 1.0
3 1.0
https://stackoverflow.com/questions/51566579
复制相似问题