Я хотел бы удалить строки из фреймворка pandas с использованием значения MultiIndex.pandas dataframe drop rows by multiindex
Я пробовал немало вещей, но я поставил ниже то, что, по моему мнению, было ближе. (На самом деле я объясню полную проблему, так как могут быть альтернативные решения, использующие совершенно другой подход). Из матрицы корреляции я хотел бы получить пару столбцов, которые больше коррелируют. Я использую unstack
и поместить результаты в dataframe:
In [263]: corr_df = pd.DataFrame(total.corr().unstack())
Затем получить более высокие корреляции (на самом деле я должен получить негативы, а).
In [264]: high = corr_df[(corr_df[0] > 0.5) & (corr_df[0] < 1.0)]
In [236]: print high
0
residual sugar density 0.552517
free sulfur dioxide total sulfur dioxide 0.720934
total sulfur dioxide free sulfur dioxide 0.720934
wine 0.700357
density residual sugar 0.552517
wine total sulfur dioxide 0.700357
Закрыто достаточно, но есть дубликаты, на самом деле это точка корреляционной матрицы. Для того, чтобы очистить их, моя идея состоит в том, чтобы повторять высокие значения для удаления дубликатов:
In [267]:
for row in high.iterrows():
print row[0][0], ",", row[0][1]
print high.loc[row[0][1]].loc[row[0][0]].index
high.drop(high.loc[row[0][1]].loc[row[0][0]].index)
residual sugar , density
Int64Index([0], dtype='int64')
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-267-1258da2a4772> in <module>()
2 print row[0][0], ",", row[0][1]
3 print high.loc[row[0][1]].loc[row[0][0]].index
----> 4 high.drop(high.loc[row[0][1]].loc[row[0][0]].index)
...
[huge stack of errors]
...
KeyError: 0
Метод drop
работает отлично, когда индекс является нормальным (см drop), но, как я строю label
когда я получил MultiIndex
?