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)
只要加上“|”,然后写下你的下一个条件。这太完美了。谢谢,这太完美了。非常感谢。