2015-06-14 109 views
0

我正在處理彙總數據,爲了進一步處理它,需要對其進行分解。原始的df包含一個值'no。每排學生的,我需要一排新的DF每名學生:熊貓:從其他數據幀信息創建數據幀行

原DF:

   faculty A faculty B faculty x 
male students   2   7  ... 
female students   4   3  ... 

新的df:

No.   gender faculty ... 
1    m  A 
2    m  A 
3    f  A 

和等等。原來的DF包含更多的信息(如國籍和地區信息),但可以用與性別相同的方式處理。 很明顯,我會先轉換(df.T),但隨後樂趣就開始了。 ..我很初學,任何指針都會很受歡迎。

回答

0

我想 「解聚」 的最簡單的方法中的數據是使用一個發電機表達 簡單地列舉了所有需要的行:

(key for key, val in series.iteritems() for i in range(val)) 

import pandas as pd 

df = pd.DataFrame({'faculty A': [2,4], 'faculty B':[7,3]}, 
        index=['male students', 'female students']) 
df.columns = [re.sub(r'faculty ', '', col) for col in df.columns] 
df.index = ['m', 'f'] 
series = df.stack() 
df = pd.DataFrame(
    (key for key, val in series.iteritems() for i in range(val)), 
    columns=['gender','faculty']) 

產量

gender faculty 
0  m  A 
1  m  A 
2  m  B 
3  m  B 
4  m  B 
5  m  B 
6  m  B 
7  m  B 
8  m  B 
9  f  A 
10  f  A 
11  f  A 
12  f  A 
13  f  B 
14  f  B 
15  f  B 

PS。以上顯示可以「分解」數據,但您確定要這樣做嗎?分解似乎相當低效。如果 的一個值是一百萬,那麼你最終會得到一百萬重複 行...

而是分列的,你可能會更好找對彙總數據進行計算的一種方式。

+0

謝謝你,爲我工作。我不確定分散聚合是否是這裏的正確步驟,但它最終應該允許我與另一個「聚合」數據集進行交叉參考。當然,你對「巨大」的價值觀是正確的。 –