#pandas
#pandas
Вопрос:
Кажется, я не знаю, в чем проблема, когда я объединил три фрейма данных в один и попытался изменить индекс объединенного фрейма данных. Вот что я сделал:
1) Сначала я объединил (или конкатенировал) три фрейма данных в «комбинированный» фрейм данных. Ниже приведен отрывок (‘TSP_JuMP_Obtained_Solu’) одного из трех. Индекс изменяется от 0 до 9 для всех трех имен данных, а также для объединенных.
2) Затем я использовал следующую строку кода, чтобы объединить их:
f_solu_tsp = pd.concat([list_TSP,list_Scenario1,list_Scenario2], axis=1,
sort=True)
3) Впоследствии я использовал следующую строку кода для изменения индекса объединенного фрейма данных (df_solu_tsp):
df_solu_tsp = df_solu_tsp.reindex(proTy_uniq_list)
ПРИМЕЧАНИЕ: ‘proTy_uniq_list’ — это список с членством, как показано ниже:
[u'lau15', u'gr17', u'fri26', u'bays29', u'dantzig42', u'KATRINA_38',
u'HARVEY_50', u'HARVEY_100', u'HARVEY_200', u'HARVEY_415']
Ниже приведен результат комбинированного фрейма данных (df_solu_tsp ):
Заранее благодарю вас за помощь.
Комментарии:
1. Пожалуйста, добавьте пример фрейма данных, чтобы мы могли воспроизвести описанные вами шаги.
2. Если вы пытаетесь заменить целочисленный индекс пользовательским списком строк, это
df_solu_tsp = df_solu_tsp.set_index(proTy_uniq_list)
то, что вы ищете?3. Спасибо, Пит. Это — df_solu_tsp = df_solu_tsp.set_index([proTy_uniq_list]) сработало.
Ответ №1:
Не имея примера DataFrame
, я постараюсь ответить как можно лучше:
Решение 1
Как упоминал Питер Леймбиглер в комментариях:
df_solu_tsp = df_solu_tsp.set_index(proTy_uniq_list)
Который заменяет ваш исходный индекс новым индексом, который в данном случае является списком равной длины.
Решение 2
Как упоминалось в pandas docs
df_solu_tsp.set_index([pd.Index(proTy_uniq_list), 'proTy'])
Решение 3
Я вижу, что вы создаете фрейм данных из трех списков, поэтому мы можем сделать шаг назад и создать ваши данные за один раз:
f_solu_tsp = pd.DataFrame({'TSP_JuMP_Obtained_Solu': list_TSP,
'Scenario1': list_Scenario1,
'Scenario2': list_Scenario2}, index=proTy_uniq_list)
Пример решения 3
data1 = ['hi', 'goodbye']
data2 = ['hello', 'bye']
idx = ['arriving', 'leaving']
df = pd.DataFrame({'column1': data1,
'column2': data2}, index=idx)
print(df)
column1 column2
arriving hi hello
leaving goodbye bye