使用两个不同的数据帧来计算新变量

时间:2016-09-08 14:46:49

标签: python pandas

我有两个相同尺寸的数据框,如下所示:

   df1
ID    flag
0      1 
1      0
2      1

  df2
ID    flag
0      0 
1      1
2      0

在两个数据帧中,我想创建一个表示附加标志的新变量。所以新变量将如下所示:

   df1
ID    flag   new_flag
0      1        1
1      0        1
2      1        1

  df2
ID    flag   new_flag
0      0        1
1      1        1
2      0        1

因此,如果任一标志列为1,则新标志将为1。 我试过这段代码:

df1['new_flag']= 1
df2['new_flag']= 1

df1['new_flag'][(df1['flag']==0)&(df1['flag']==0)]=0
df2['new_flag'][(df2['flag']==0)&(df2['flag']==0)]=0

我希望1new_flag的{​​{1}}数量相同但不同。这是因为我不是一行一行吗?喜欢这个问题? pandas create new column based on values from other columns 如果是这样,我如何包含两个datafrmes的标准?

1 个答案:

答案 0 :(得分:2)

如果我们将np.logical_or设置为除最后一行之外的所有0,则可以使用df1来实现此目的,因此我们不只是获得1列,我们可以使用np.logical_or转换astype(int)的结果,将布尔数组转换为10

In [108]:
df1['new_flag'] = np.logical_or(df1['flag'], df2['flag']).astype(int)
df2['new_flag'] = np.logical_or(df1['flag'], df2['flag']).astype(int)
df1

Out[108]:
   ID  flag  new_flag
0   0     0         0
1   1     0         1
2   2     1         1

In [109]:
df2

Out[109]:
   ID  flag  new_flag
0   0     0         0
1   1     1         1
2   2     0         1