К сожалению, я не могу поделиться фактическими данными, с которыми я работаю, для этого вопроса, так что потерпите меня, когда я пытаюсь использовать обобщенный пример, чтобы помочь объяснить ошибку, которую я вижу.
У меня есть два кадра данных, которые мы назовем df_local
и df_global
, которые мне нужно объединить, чтобы получить полное представление о данных в моей базе данных.df_global
имеет около 16 столбцов, наиболее значимыми из которых являются: ['observation_id', 'min', 'max']
.df_local
имеет 4 столбца, ['observation_id', 'local_id', 'min', 'max']
.Тем не менее, между двумя кадрами данных, observation_id
- это то же самое, но min
и max
означают разные вещи.В df_local
min
и max
являются локальными минимумами и максимумами, в то время как min
и max
в df_global
являются фактическими минимумом и максимумом всего набора данных для этого наблюдения.
Когда я объединяю два кадра данных, используя следующую строку кода:
df = pd.merge(df_global, df_local, on = 'observation_id', how = 'outer')
Я не получаю ошибок и df
возвращается со столбцами ['min_x','max_x', 'min_y','max_y']
.Что ... хорошо ... за исключением того, что я хочу переименовать столбцы перед выполнением слияния, чтобы я знал, какой из них локальный, а какой глобальный.
ОДНАКО, когда я переименовываюСтолбцы df_local
в ['observation_id', 'local_id', 'local_min', 'local_max']
При слиянии я получаю следующую ошибку:
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)
Это похоже на эта ошибка здесь , поэтому я проверил, чтобы убедиться, что у меня нетповторяющиеся столбцы в любом из данных.Я не буду.Опять же, эта ошибка возникает ТОЛЬКО, когда я пытаюсь переименовать столбцы df_local
перед выполнением слияния.Когда я не переименовываю столбцы, я не получаю сообщение об ошибке.
Я понятия не имею, что происходит, и охотился по Интернету за помощью, и даже попросил местных гуру-питонов, работающих с этими данными, что может бытьэта проблема.Мы все застряли.
Я извиняюсь за то, что не смог представить фактические данные, чтобы показать ошибку в действии, но я надеюсь, что описания достаточно, чтобы кто-то мог найти решение.
РЕДАКТИРОВАТЬ:
Вот что я могу показать из моего сценария.
Что работает:
df = pd.merge(df_global, df_local, on = 'observation_id', how = 'outer')
Что не работает:
df_local.columns = ['observation_id', 'local_id', 'local_min', 'local_max']
df = pd.merge(df_global, df_local, on = 'observation_id', how = 'outer')