如何在熊猫中创建一列虚拟变量?

时间:2020-06-25 15:58:54

标签: python pandas time-series

我有一列时间序列数据如下所示

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表示。我可以通过循环来完成此操作,但是如果使用的话,这似乎并不是一个聪明的主意熊猫。

有人可以告诉我在熊猫市中这样做的正确方法吗?谢谢!

4 个答案:

答案 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