根据其他两个变量的值创建变量

时间:2020-01-12 14:41:37

标签: python pandas dataframe variables

我在熊猫中有一个数据框,其中包含两个变量: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)

2 个答案:

答案 0 :(得分:1)

第二个条件似乎需要.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')

答案 1 :(得分:0)

用适合您的任何值替换np.nan

df['new_variable'] = np.where((df['dec'] == 1) & df['type'].isin([1,2,3]), 1, np.nan)