2017-09-27 102 views
1

我在python從pd.concat來與重複多指標一個大熊貓數據幀的重複多指標:重置熊貓

 customer_id 
0 0 46841769 
    1 4683936 
1 0 8880872 
    1 8880812 
0 0 8880873 
    1 1000521 
1 0 1135488 
    1 5388773 

否,我將重置僅多指標的第一索引,以使得我在索引上得到一個重複的數字。事情是這樣的:

 customer_id 
0 0 46841769 
    1 4683936 
1 0 8880872 
    1 8880812 
2 0 8880873 
    1 1000521 
3 0 1135488 
    1 5388773 

一般情況下,我有大約5神達記錄,而不是最大的機器。所以我正在尋找一個高效的內存解決方案。

ignore_index =在pd.concat中爲true不起作用,因爲那時我失去了Multiindex。

非常感謝

+0

你的'concat'代碼是什麼? – jezrael

回答

1

您可以通過get_level_valuesto_series轉換第一級,然後將其與shift ED值進行比較,並添加cumsum對數和最後使用MultiIndex.from_arrays

a = df.index.get_level_values(0).to_series() 
a = a.ne(a.shift()).cumsum() - 1 

mux = pd.MultiIndex.from_arrays([a, df.index.get_level_values(1)], names=df.index.names) 

df.index = mux 

或者:

df = df.set_index(mux) 

print (df) 
    customer_id 
0 0  46841769 
    1  4683936 
1 0  8880872 
    1  8880812 
2 0  8880873 
    1  1000521 
3 0  1135488 
    1  5388773 
+0

感謝您的回答。 如果我這樣做,那麼我將失去我的多重索引,並且只獲得數據的單個索引。不過,我需要這個0,1構造。 –

+0

很酷,謝謝你的作品。非常感謝您的快速回答。創造了我的一天。 –

+0

很高興能幫到你!如果我的回答有幫助,請不要忘記[接受](http://meta.stackexchange.com/a/5235/295067) - 點擊答案旁邊的複選標記('✓')將其從灰色出來填補。謝謝。 – jezrael