2017-09-27 105 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