Я пытаюсь построить некоторые данные в пандах, а встроенная функция графика удобно отображает одну строку на столбец. Я хочу, чтобы вручную назначить каждой строке цвет, основанный на классификации, которую я делаю.Назначить цвета линий в pandas
следующие работы:
df = pd.DataFrame({'1': [1, 2, 3, 4], '2': [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=['1','2'])
df.plot(color = s)
Но когда мои индексы являются целыми числами, он больше не работает и бросает в KeyError:
df = pd.DataFrame({1: [1, 2, 3, 4], 2: [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=[1,2])
df.plot(color = s)
Я так понимаю, что когда целочисленный индекс используется это как-то должно начинаться с 0. Это мое предположение, так как следующие работы также:
df = pd.DataFrame({0: [1, 2, 3, 4], 1: [1, 2, 1, 2]})
s = pd.Series(['c','y'], index=[1,0])
df.plot(color = s)
Мой вопрос:
- Что здесь происходит?
- Предполагая, что у меня есть целочисленный индекс, который не начинается с 0 или не состоит из последовательных чисел, как я могу сделать эту работу без преобразования индекса в строку или переиндекса, начиная с 0?
EDIT:
я понял, что даже в первом случае код не делать то, что я ожидал, что это сделать. Кажется, что pandas соответствует индексу DataFrame и Series, только если оба являются целыми индексами, начиная с 0. Если это не так, генерируется KeyError или если индекс является str, то порядок элементов используется.
Это правильно? И есть ли способ сопоставить индексы Series и DataFrame? Или мне нужно убедиться, что я передаю список цветов в правильном порядке?
Вы не хотите, чтобы индексы соответствовали. Вы сопоставляете индекс Series с столбцами DataFrame. – thecircus