我有一个Pandas df,我尝试使用规则将2个不同列的字符串值组合到df中的单个新列中。我遇到了问题,因为我无法获取代码以根据我要使用的业务逻辑/规则在列中选择适当的值。
以下是df的示例:
ID Date Original New
ID1000 1/1/2019 High
ID2000 4/10/2019 Moderate
ID3000 4/15/2019 High Critical
ID4000 1/30/2019 Low Moderate
#code to replicate example df
import pandas as pd
lst= [['ID1000','1/1/2019','High',''],
['ID2000','4/10/2019','','Moderate'],
['ID3000','4/15/2019','High','Critical'],
['ID4000','1/30/2019','Low','Moderate'],
]
df= pd.DataFrame(lst,columns=['ID','Date','Original','New'], dtype = float)
df
在此df中,我需要创建一个[Combined]列,该列遵循以下规则:
生成的df应该如下所示:
ID Date Original New Combined
ID1000 1/1/2019 High High
ID2000 4/10/2019 Moderate Moderate
ID3000 4/15/2019 High Critical Critical
ID4000 1/30/2019 Low Moderate Moderate
我尝试应用类似于Excel嵌套IF的上述规则,但是没有任何运气。这是我使用的代码。
['Date']=pd.to_datetime(result['Date'])
[Combined]= if {['Date']<4/4/2019,[Original],
if{['Date']>=4/4/2019,[New],
if{['Date']<4/4/2019 & ['New']>0,[New]}}}
我期望创建一个新列[组合],并且该列中的值将为:“高”,“中等”,“严重”,“中等”。
当我应用上面的逻辑时,我在下面收到此“无效语法”错误:
File "<ipython-input-13-33cb4e8d5ca7>", line 3
[Combined]= if {['Date']<4/4/2019,[Original],
^
SyntaxError: invalid syntax
我已经看了过去几天的文档,但是我不知道如何将2列中的值与规则组合到一个新列中。此外,我还没有遇到过类似的用例。
有人可以帮我吗?也许有更好的方法。提前致谢。
答案 0 :(得分:0)
我正在使用np.select
中的numpy
import numpy as np
con1=df.Date<'2019-04-04'
con2=df.Date>='2019-04-04'
con3=con1&df.New.ne('')
df['Combine']=np.select([con1,con2,con3],[df.Original,df.New,df.New])
df
Out[84]:
ID Date Original New Combine
0 ID1000 2019-01-01 High High
1 ID2000 2019-04-10 Moderate Moderate
2 ID3000 2019-04-15 High Critical Critical
3 ID4000 2019-01-30 Low Moderate Low
答案 1 :(得分:0)
您可以组合条件2&3,然后使用gatsby-browser
:
np.where()