Поскольку я считаю, что конечной целью является анализ данных ...;)
Я бы растопил ваш df:
unique_cols = ["QID_x","URL_x","Questions",
"Answers_x","Section","QType_x",
"Theme","Topics"]
results = df.melt(id_vars=unique_cols,
var_name="Answer",
value_name="Value")
results = results[pd.notnull(results["Value"])]
Теперь вы можете легко проанализировать каждый вопрос:
results[results.QID_x == 1]
После того, как вы расплавились, вы можете развернуться и сделать что-то вроде этого:
results.sort_values(by='Answer').pivot(index="QID_x", columns='Answer', values='Value')
Затем снова присоединитесь к (pd.merge) с исходным фреймом (без ответов).