[英]python - drop duplicated index in place in a pandas dataframe
[英]Drop duplicated index names in MultiIndex dataframe
在對數據集執行一些操作后,我最終得到了這樣的數據框:
df = pd.DataFrame([1, 2, 3, 4, 5],
index = pd.MultiIndex.from_arrays(np.array([[0, 0, 1, 1, 1],
[1448, 1448, 1448, 1448, 1448],
[0, 0, 1, 1, 1],
[1448, 1448, 1448, 1448, 1448],
['22', '11', '14', '15', '19']]),
names = ['meas_id', 'hec_id', 'meas_id', 'hec_id', 'lab_id']))
print(df)
0
meas_id hec_id meas_id hec_id lab_id
0 1448 0 1448 22 1
11 2
1 1448 1 1448 14 3
15 4
19 5
正如你可以看到, meas_id
和hec_id
列MultiIndex
是重復的。 我可以使用reset_index([3, 4], drop=True)
來刪除它們,但是這個結果數據框實際上是數據框列表的一部分,其中一些具有重復的索引列,有些沒有。 因此我的問題是:如何從 MultiIndex 中刪除重復的索引列?
請注意,此問題指的是列中的重復項,而不是行中的重復項。
對於通用刪除重復索引名稱的解決方案,您可以執行以下操作:
import numpy as np
ixs = np.flatnonzero(pd.Index(df.index.names).duplicated()).tolist()
df.reset_index(ixs, drop=True)
0
meas_id hec_id lab_id
0 1448 22 1
11 2
1 1448 14 3
15 4
19 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.