Python 依赖于两列的三元表达式

Python 依赖于两列的三元表达式,python,pandas,Python,Pandas,假设我们的数据集类似于: DF = pd.DataFrame({'Time':[1,2,3,4,5,6,7,8,9,10],'Value': [1,3,5,5,6,8,9,5,6,7]}) 给予: Time Value 0 1 1 1 2 3 2 3 5 3 4 5 4 5 6 5 6 8 6 7 9 7 8 4 8 9 6

假设我们的数据集类似于:

DF = pd.DataFrame({'Time':[1,2,3,4,5,6,7,8,9,10],'Value': [1,3,5,5,6,8,9,5,6,7]})
给予:

   Time  Value
0     1      1
1     2      3
2     3      5
3     4      5
4     5      6
5     6      8
6     7      9
7     8      4
8     9      6
9    10      7
我想做的是在“值”中将所有大于5的值设置为等于0,但仅当“时间”大于5时。最终产品将是:

   Time  Value
0     1      1
1     2      3
2     3      5
3     4      5
4     5      6
5     6      0
6     7      0
7     8      4
8     9      0
9    10      0
我一直在使用一个代码:

 DF.Value = [0 if x > 5 else x for x in DF.Value] 
这显然会将所有值更改为0,如果它们大于5。我已尝试将以下内容添加到此代码中:

  DF.Value = [0 if x > 5 in DF.value and x > 5 in DF.Time else x for x in DF.Value]

但我似乎无法获得正确的单词/代码组合来产生我想要的东西。有什么建议吗?多谢各位

我发现使用numpy很容易。在这些情况下:

import numpy as np
DF['Value'] = np.where((DF.Time > 5) & (DF.Value > 5),0,DF.Value)
*要添加到此答案中,如果您希望满足更多条件,可以将它们添加到上述代码中,如下所示:

DF['Value'] = np.where((DF.Time > 500) & (DF.Value > 5) | (DF.Time > 5) & (DF.Value < 1),0,DF.Value)
DF['Value']=np.其中((DF.Time>500)和(DF.Value>5)|(DF.Time>5)和(DF.Value<1),0,DF.Value)

只需添加“|”,然后编写下一个条件。

我发现使用numpy很容易。在这些情况下:

import numpy as np
DF['Value'] = np.where((DF.Time > 5) & (DF.Value > 5),0,DF.Value)
*要添加到此答案中,如果您希望满足更多条件,可以将它们添加到上述代码中,如下所示:

DF['Value'] = np.where((DF.Time > 500) & (DF.Value > 5) | (DF.Time > 5) & (DF.Value < 1),0,DF.Value)
DF['Value']=np.其中((DF.Time>500)和(DF.Value>5)|(DF.Time>5)和(DF.Value<1),0,DF.Value)

只要加上“|”,然后写下你的下一个条件。

这太完美了。谢谢,这太完美了。非常感谢。