У меня есть датафрейм, как показано ниже;
--------------------------------
Col1 Col2
--------------------------------
1 AppVer: 1.1.1 | name: A
0 name:B
1 AppVer: 2.3.1 | name: B
Я хотел создать новый столбец (newCol3) на основе условия
1. Если Col1 = 1, тогда разбейте Col2 на основе "|" и напиши в колонку newCol3
2. Если Col1 = 0, напишите «Не применимо» в столбец newCol3
Я попробовал приведенный ниже код для цикла с использованием iterrows & условных операторов;
for index, row in df1.iterrows():
if row['Col1']==1:
df1['newCol3']="NA"
elif row['Col1']==0:
a=row['Col2'].split("|")
df1['newCol3']=a[0]
Но если значение в newCol3 не соответствует ожидаемому, как показано ниже.
Кроме того, я получаю предупреждение, как это
" main : 8: SettingWithCopyWarning:
Значение пытается быть установлено для копии среза из DataFrame.
Попробуйте вместо этого использовать .loc [row_indexer, col_indexer] = значение
Смотрите предупреждения в документации: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy"
Полученный результат:
---------------------------------------------------
Col1 Col2 newCol3
---------------------------------------------------
1 AppVer: 1.1.1 | name: A 1.1.1
0 name:B 1.1.1
1 AppVer: 2.3.1 | name: B 2.3.1
Ожидаемый результат:
---------------------------------------------------
Col1 Col2 newCol3
---------------------------------------------------
1 AppVer: 1.1.1 | name: A 1.1.1
0 name:B Not Applicable
1 AppVer: 2.3.1 | name: B 2.3.1
Предоставьте мне любую помощь / предложения.