我有一列时间序列数据如下所示
TimeStamp Data
2002-01-01 00:00:00 0.00120
2002-01-01 08:00:00 0.00070
2002-01-01 12:00:00 0.00000
2002-01-01 16:00:00 -0.00440
...
2003-01-01 12:00:00 0.00220
2003-01-01 16:00:00 -0.00440
通常,该列中有正数,负数和0.00000
。我想添加一个虚拟列,其中所有正数均由1表示,负数由0表示,0.00000
由2表示。我可以通过循环来完成此操作,但是如果使用的话,这似乎并不是一个聪明的主意熊猫。
有人可以告诉我在熊猫市中这样做的正确方法吗?谢谢!
答案 0 :(得分:1)
您可以执行以下操作:
# initialise a column named sign
df["sign"] = [0]*df.shape[0]
# apply to all cases
df.loc[df["Data"] < 0, "sign"] = 0
df.loc[df["Data"] > 0, "sign"] = 1
df.loc[df["Data"] == 0, "sign"] = 2
答案 1 :(得分:1)
有np.sign
可以为您1,0,-1
提供+,0,-
的信息,
df['sign'] = np.sign(df['Data'])
答案 2 :(得分:1)
您可以使用numpy select
:
df['dummy'] = np.select((df.Data<0, df.Data>0), (0,1), 2)
答案 3 :(得分:1)
我相信这应该可行。
df.loc[df['Data']>0,'Dummy Column'] = 1
df.loc[df['Data']<0,'Dummy Column'] = 0
df.loc[df['Data']==0,'Dummy Column'] = 2