Как связать панду по трубопроводу с манипулированием индексами? - PullRequest
1 голос
/ 02 апреля 2019

Я занимался черчением в пандах и столкнулся со следующей проблемой при работе с цепями панд

import numpy as np
import pandas as pd
import seaborn as sns

n = 365
df = pd.DataFrame(data = {"A":np.random.randn(n), "B":np.random.randn(n)+1},
                  index=pd.date_range(start="2017-01-01", periods=n, freq="D"))

df1 = df.stack().reset_index().set_axis(['month','vars','vals'],axis=1,inplace=False).set_index('month',drop=True)

sns.boxplot(x=df1.index.month, y="vals", hue="vars", data=df1)

Как это сделать с помощью одной цепочки панд?

Моя попытка: (выводит неправильное изображение)

(df.stack().reset_index().set_axis(['month','vars','vals'],axis=1,inplace=False)
 .set_index('month',drop=False)
 .pipe( (sns.boxplot, 'data'), x='month', y="vals", hue="vars"))

Обязательное изображение:

enter image description here

Вопрос

Как получить вышеуказанное изображение в ONE-LINER?

1 Ответ

1 голос
/ 02 апреля 2019

Вы хотели что-то подобное, используя лямбда-функцию для передачи кадра данных в sns.boxplot:

(df.stack().reset_index().set_axis(['month','vars','vals'],axis=1,inplace=False)
   .set_index('month',drop=False)
   .pipe(lambda x: sns.boxplot(x=x.index.month, y="vals", hue="vars", data=x)))

enter image description here

...