Python:关于 pandas 列的多个条件问题

标签 python pandas conditional-statements

我有一个关于 pandas 列上的多个条件的问题。我有以下数据框:

    A   B   C
0   0   9   0
1   1   8   0
2   1   9   0
3   1   5   1
4   1   9   1
5   1   8   1
6   -1  9   0
7   -1  5   -1
8   -1  7   -1

我想要实现的目标如下:

1.) 如果 A>0 且 B <6 C 应变为 1 并保持不变,直到 A 发生变化(B 可能达到 6 以上)

2.) 如果 A<0 且 B <6 C 应变为 -1 并保持不变,直到 A 发生变化(B 可能高于 6)

有什么建议如何在没有循环的情况下做到这一点吗?

我正在努力解决如何“记住”当前 A= 1 或 A=-1 期间 B 低于 6 的状态。

感谢您的建议

最佳答案

当满足您自己的条件时,使用np.select创建您的帮助列,然后我们使用bfill进行groupby

s1=(df.A>0)&(df.B<6)
s2=(df.A<0)&(df.B<6)
df['v']=np.select([s1,s2],[1,-1])
df.v.replace(0,np.nan).groupby(df.A).ffill().fillna(0).astype(int)
Out[1023]: 
0    0
1    0
2    0
3    1
4    1
5    1
6    0
7   -1
8   -1

关于Python:关于 pandas 列的多个条件问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52668529/

相关文章:

python - 分析对象列表中的数据

python - 求解当前代码的非线性曲线拟合

python - pandas 中是否有相当于 excel 公式的内容

c++ - 限制 while 循环中的条件数?

python - 条件为负整数

elasticsearch - Elasticsearch : General and conditional filters

python - django 中的动态表单与 ajax/dajax

python - 在 RandomForestRegressor sklearn 中绘制特征重要性

python - 根据来自多个行索引的多个列的值的聚合创建一个列

python - 如何基于逻辑运算从Pandas DataFrame中提取索引/列/数据?