首页 > 解决方案 > 根据其他两个变量的值创建一个变量

问题描述

我在熊猫中有一个数据框,其中包含两个变量:DEC 和 TYPE

dec     type
 1        13
 2        2
 2        5
 2        7
 2        9
 3        5

从这两个变量中,我想根据这两个变量的值创建其他二进制变量。

我一直无法找到代码来编写我想要的代码,但是在 python-English 中,它会是这样的:

df['new_variable'] = 1 if DEC == 1 & TYPE == 3 or 2 or 1

请让我知道我是否可以在我的问题中包含一些内容来澄清我在寻找什么。

从答案更新:

我遇到了一个问题,因为对于每个变量,我需要运行两行代码(如下),当我运行第二行时,它会超出第一行中的编码。我如何同时运行两条线(即第二条线不超过第一条线)?

harrington_citations['gov_winner'] =  np.where((harrington_citations['dec'] == 1) & harrington_citations['type'].isin([1,2,3,4,22]) , 1, 0)

harrington_citations['gov_winner'] = np.where((harrington_citations['dec'] == 2) & harrington_citations['type'].isin([1,5,9,13,18]), 1, 0)

标签: pythonpandasdataframevariables

解决方案


看起来您需要.isin第二个条件并返回 1/0:

df['new_variable'] = (df['dec'].eq(1) & df['type'].isin([3,2,1])).view('i1')

编辑每条评论,您应该使用条件创建 2 个条件|

c1 = (harrington_citations['dec'] == 1) & harrington_citations['type'].isin([1,2,3,4,22])
c2 = (harrington_citations['dec'] == 2) & harrington_citations['type'].isin([1,5,9,13,18])
harrington_citations['gov_winner'] = (c1|c2).view('i1')

推荐阅读