如何在python中的csv列中将值分配二进制值?

时间:2019-07-12 07:33:30

标签: python pandas csv binary

我有一个数据帧index,并想根据索引的值添加一和零的列dummy。数据框如下所示:

        Date        index_value
0   0   8/1/2003    -0.33
1   1   9/1/2003    -0.37
2   2   10/1/2003   -0.42
3   3   11/1/2003    0.51
4   4   12/1/2003   -0.51
5   5   1/1/2004    -0.49
6   6   2/1/2004     0.68
7   7   3/1/2004    -0.58
8   8   4/1/2004    -0.57
9   9   5/1/2004    -0.47
10  10  6/1/2004    -0.67
11  11  7/1/2004    -0.59
12  12  8/1/2004     0.6
13  13  9/1/2004    -0.63
14  14  10/1/2004   -0.48
15  15  11/1/2004   -0.55
16  16  12/1/2004   -0.64
17  17  1/1/2005     0.68
18  18  2/1/2005    -0.81
19  19  3/1/2005    -0.68
20  20  4/1/2005    -0.48
21  21  5/1/2005    -0.48

,我想创建一个虚拟对象,如果索引值大于0.5,则该虚拟对象将提供1,在其他情况下,将提供0。 到目前为止,我的代码是:

df = pd.read_csv("index.csv", parse_dates=True)
df['dummy']=df['index_value']...

df = ....to_csv("indexdummy.csv")

但是现在已经知道如何分配虚拟变量。 我对dummy列的预期输出为:0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0

1 个答案:

答案 0 :(得分:1)

Series.gt比较列名,并将掩码转换为整数:

df['dummy'] = df['index_value'].gt(.5).astype(int)
#alternative
#df['dummy'] = np.where(df['index_value'].gt(.5),1,0)

#if need compare index values
#df['dummy'] = (df.index > .5).astype(int)  
print (df)
            Date  index_value  dummy
0  0    8/1/2003        -0.33      0
1  1    9/1/2003        -0.37      0
2  2   10/1/2003        -0.42      0
3  3   11/1/2003         0.51      1
4  4   12/1/2003        -0.51      0
5  5    1/1/2004        -0.49      0
6  6    2/1/2004         0.68      1
7  7    3/1/2004        -0.58      0
8  8    4/1/2004        -0.57      0
9  9    5/1/2004        -0.47      0
10 10   6/1/2004        -0.67      0
11 11   7/1/2004        -0.59      0
12 12   8/1/2004         0.60      1
13 13   9/1/2004        -0.63      0
14 14  10/1/2004        -0.48      0
15 15  11/1/2004        -0.55      0
16 16  12/1/2004        -0.64      0
17 17   1/1/2005         0.68      1
18 18   2/1/2005        -0.81      0
19 19   3/1/2005        -0.68      0
20 20   4/1/2005        -0.48      0
21 21   5/1/2005        -0.48      0