dflist
- список из трех элементов. Ваш порядок индексации в строке:
dflist[70:90][i]['A']
неправильный, поскольку он пытается индексировать через DataFrame
и сначала фильтровать строки, вызывая IndexError
.
. Это индексирование будет работать так, как задумано, когда написано:
dflist[i][70:90]['A']
, который сначала выберет DataFrame
, от df1
до df3
, затем отфильтрует строки данных.
Для вашего Второй вопрос о том, как получить среднее распределение, как насчет следующего?
avg_df = pd.concat([df['A'] for df in dflist], axis=1)
avg_df["mean"] = avg_df.mean(axis=1)
sns.distplot(avg_df.loc[avg_df.index[70:90], 'mean'], bins=None, hist=True, kde=True, rug=False)
plt.show()
Этот код работает путем создания нового avg_df
DataFrame
путем объединения столбцов 'A' из каждого DataFrame
в ваш dflist
. Затем он вычисляет среднее значение по строкам этого DataFrame
. Наконец, он индексирует avg_df
, чтобы сохранить только выбранные строки (70:90
) и столбец 'mean'.