Pandas: ошибка буфера слияния в переименованных столбцах - PullRequest
0 голосов
/ 04 февраля 2019

К сожалению, я не могу поделиться фактическими данными, с которыми я работаю, для этого вопроса, так что потерпите меня, когда я пытаюсь использовать обобщенный пример, чтобы помочь объяснить ошибку, которую я вижу.

У меня есть два кадра данных, которые мы назовем 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')
...