У меня есть фрейм данных df1
Questions Purpose
what is scientific name of <input> scientific name
what is english name of <input> english name
И у меня есть 2 списка, как показано ниже:
name1 = ['salt','water','sugar']
name2 = ['sodium chloride','dihydrogen monoxide','sucrose']
Я хочу создать новый фрейм данных, заменив <input>
значениямив списке зависит от цели.
если целью является английское имя, замените <input>
на значения в name2
, в противном случае замените <input>
на name1
.
Ожидаемый результатDataFrame:
Questions Purpose
what is scientific name of salt scientific name
what is scientific name of water scientific name
what is scientific name of sugar scientific name
what is english name of sodium chloride english name
what is english name of dihydrogen monoxide english name
what is english name of sucrose english name
Мои усилия
questions = []
purposes = []
for i, row in df1.iterrows():
if row['Purpose'] == 'scientific name':
for name in name1:
ques = row['Questions'].replace('<input>', name)
questions.append(ques)
purposes.append(row['Purpose'])
else:
for name in name2:
ques = row['Questions'].replace('<input>', name)
questions.append(ques)
purposes.append(row['Purpose'])
df = pd.DataFrame({'Questions':questions, 'Purpose':purposes})
Приведенный выше код дает ожидаемый результат.Но это слишком медленно, так как у меня много вопросов по поводу оригинального dataframe
.(У меня тоже несколько целей, но сейчас я придерживаюсь только 2).
Я ищу более эффективное решение, которое может избавиться от петли for
.