2017-09-08 117 views
1

好吧,這很棘手。我有一個熊貓數據框,我正在處理機器日誌數據。我在數據中有一個索引,但是這個數據框有不同的工作。我希望能夠爲這些個人工作提供一個自己的索引,以便我可以將它們相互比較。所以我想要另一個列索引從零開始,直到工作結束,然後重置爲零的新作業。或者我一行一行地做?在熊貓數據框中創建子索引

+0

請看http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples並學習如何提出一個好的熊貓問題。你需要顯示你的數據和你的預期輸出。我們不能從解釋的段落中構造例子。 –

回答

2

我認爲你需要set_indexcumcount的計數類:

df = df.set_index(df.groupby('Job Columns').cumcount(), append=True) 

樣品:

np.random.seed(456) 
df = pd.DataFrame({'Jobs':np.random.choice(['a','b','c'], size=10)}) 

#solution with sorting 
df1 = df.sort_values('Jobs').reset_index(drop=True) 
df1 = df1.set_index(df1.groupby('Jobs').cumcount(), append=True) 
print (df1) 
    Jobs 
0 0 a 
1 1 a 
2 2 a 
3 0 b 
4 1 b 
5 2 b 
6 3 b 
7 0 c 
8 1 c 
9 2 c 

#solution with no sorting 
df2 = df.set_index(df.groupby('Jobs').cumcount(), append=True) 
print (df2) 
    Jobs 
0 0 b 
1 1 b 
2 0 c 
3 0 a 
4 1 c 
5 2 c 
6 1 a 
7 2 b 
8 2 a 
9 3 b 
+0

解決了這個問題。我認爲你是一個熊貓天才。非常感謝! – user3591675

+0

很高興能幫到你!祝你好運! – jezrael