如何基于另一个DataFrame中的列在Pandas DataFrame中创建新列?

时间:2019-02-16 01:15:45

标签: python pandas dataframe

*我是Python和Pandas的新手
我需要做以下
我有2个DataFrame,我们称它们为df1和df2

df1

Index    Req ID  City_Atlanta   City_Seattle    City_Boston Result  
 0        X         1                0            0           0  
 1        Y         0                1            0           0  
 2        Z         0                0            1           1

df2

Index    Req_ID    City        
  0         X      Atlanta     
  1         Y      Seattle     
  2         Z      Boston    

我想在df2中添加一个名为result的列,如果df1.result = 0,则df2.result = False,如果df1.result = 1,则df2.result = True。

最终结果应该像 df2

Index    Req_ID    City       result 
  0         X      Atlanta     False
  1         Y      Seattle     False
  2         Z      Boston      True

我也不是要问有关Stack Overflow的问题,所以请原谅任何常见的错误。

3 个答案:

答案 0 :(得分:3)

考虑Req ID是匹配密钥,并且df的长度不相同,可以使用:

df2['Result'] = df2.Req_ID.map(dict(zip(df['Req ID'],df.Result))).astype(bool)

0    False
1    False
2     True

如果长度相等,则可以使用@aws_apprentice的上述溶胶

答案 1 :(得分:2)

您可以applybool设为0,1。

df2['Result'] = df1['Result'].apply(bool)

您还可以map值字典。

df2['Result'] = df1['Result'].map({0: False, 1: True})

答案 2 :(得分:1)

假设它们的长度相同:

df2['Result'] = df1['Result']==1