У меня есть 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 мне нужно создать столбец [Комбинированный], который следует следующим правилам:
- Если [Дата] <4/4/2019, используйте значениеиз строки столбца [Оригинал] </li>
- Если [Дата]>> = 4/4/2019, используйте значение из строки столбца [Новый]
- Если [Дата] <4/ 4/2019 и существует значение строки столбца [New], используйте значение из строки столбца [New]. </li>
Полученный 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 столбцов в новый столбец с правилами.Кроме того, я не сталкивался с вариантом использования, подобным этому, со строками.
Может кто-нибудь помочь мне с этим?Возможно, есть лучший подход.Заранее спасибо.