Pandas dataframe "ValueError: невозможно переиндексировать с дублированной оси" дублирующиеся индексы решение грубой силы? - PullRequest
1 голос
/ 15 июня 2019
import pandas as pd

df_avocado = pd.read_csv("avocado.csv")
df_avocado.set_index("Date", inplace=True)

Проблема здесь:

'''
determines all unique regions (ex: "Alabama", "Alaska", "Arkansas") in dataframe "df_avocado"
finds all data-points belonging to that unique region
dumps those data-points into a temporary dataframe "df_region"
calculates the 25sma of every df_region
dumps the 25sma to "df_avocado_region_25ma" so I can compare 25sma of every region
'''

df_avocado_region_25ma = pd.DataFrame()
for region in df_avocado["region"].unique():
    df_region = df_avocado.copy()[df_avocado["region"] == region]
    df_avocado_region_25ma[f"{region}_25ma"] = df_region["AveragePrice"].rolling(25).mean()

При добавлении каждого df_region к df_avocado_region_25ma Jupyter выдает «ValueError: невозможно переиндексировать с дублированной оси».

Я посмотрел, что означает ValueError; цитата из Что означает `ValueError: невозможно переиндексировать от дублирующей оси`? ," эта ошибка обычно возникает, когда вы присоединяетесь / присваиваете столбцу, когда в индексе есть повторяющиеся значения ".

Это имеет смысл, поскольку столбец «дата» (который я установил в качестве индекса) имеет много перекрывающихся значений. Однако, так как мне все равно, что есть дублирующие индексы (они обеспечивают максимум / минимум для 20 сма), и я не хочу перезаписывать предыдущий индекс (предпочитаю включать каждую точку данных), есть ли способ перебор и добавьте все точки в?


www.kaggle.com / neuromusic / Авокадо-цены

import pandas as pd

df_avocado = pd.read_csv("avocado.csv")
wanted_columns = ["Date", "AveragePrice", "region"]
df_avocado = df_avocado[wanted_columns]
df_avocado["Date"] = pd.to_datetime(df_avocado["Date"])
df_avocado.set_index("Date", inplace=True)
df_avocado.sort_index(inplace=True)

df_avocado_region_25ma = pd.DataFrame()
for region in df_avocado["region"].unique():
    df_region = df_avocado.copy()[df_avocado["region"] == region]
    df_avocado_region_25ma[f"{region}_25ma"] = df_region["AveragePrice"].rolling(25).mean()
df_avocado_region_25ma.plot()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...