python pandas布尔比较如何将列的每个值与整数进行比较?

2024-06-26 00:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

与熊猫快速提问。 假设我有一个pandas数据帧存储以下值

timestamp              value                                   
2000-01-03 00:00:00       25  
2000-01-03 00:30:00      -10  
2000-01-03 01:00:00      100  
2000-01-03 01:30:00     -690  
2000-01-03 02:00:00      650  
2000-01-03 02:30:00      320  
2000-01-03 03:00:00      150  
2000-01-03 03:30:00      160

我想添加一个列,如果值大于0,则填充一个where a=1

^{pr2}$

有没有一个简单的pandas语法可以做到这一点? 我试过很多代码,这里没有postinf,因为它比任何东西都更令人困惑。。。在

谢谢! (我正在把问题改得更清楚,对此我很抱歉…)


Tags: 数据代码pandasvalue语法wheretimestamppr2
2条回答

使用np.sign()方法:

In [22]: df['a'] = np.sign(df.value)

In [23]: df
Out[23]:
             timestamp  value  a
0  2000-01-03 00:00:00     25  1
1  2000-01-03 00:30:00    -10 -1
2  2000-01-03 01:00:00    100  1
3  2000-01-03 01:30:00   -690 -1
4  2000-01-03 02:00:00    650  1
5  2000-01-03 02:30:00    320  1
6  2000-01-03 03:00:00    150  1
7  2000-01-03 03:30:00    160  1
8  2000-01-03 04:00:00      0  0   # <  -

注意:np.sign-对于0值返回{},如果您想让-1作为零值,请使用np.where()

^{pr2}$

此代码应适用于:

list(trend.map(lambda x: 1 if x is True else -1))

如果不需要列表,只需删除list()。然后返回一个序列。在

如果您想处理trade

^{pr2}$

会做同样的工作。在

相关问题 更多 >