2017-08-31 41 views
-4

我有一個包含數據框父母與子女的記錄這樣轉換大熊貓據幀爲不同的格式

ID | Parent | Child 
0 | 1 | M 
1 | 1 | N 
2 | 1 | O 
3 | 2 | T 
4 | 2 | Q 
5 | 3 | U 

我想將其轉換爲這種格式

ID | List  | Parent 
0 | 1   | N/A 
1 | M   | 1 
2 | N   | 1 
3 | O   | 1 
4 | 2   | N/A 
5 | T   | 2 
6 | Q   | 2 
7 | 3   | N/A 
8 | U   | 3 

任何幫助將不勝感激!

+0

這個問題不太可能以目前的形式得到解答。請訪問[如何詢問?](https://stackoverflow.com/help/how-to-ask)尋求建議。 – IanS

回答

-1

創建從子項到父項的映射。

v = df.set_index('ID').values 
mapping = dict(v[:, ::-1]) 

使用舊值創建一個新的數據幀。

df_new = pd.DataFrame({'List' : pd.Series(v.reshape(-1,)).drop_duplicates()}) 
df_new 
    List 
0  1 
1  M 
3  N 
5  O 
6  2 
7  T 
9  Q 
10 3 
11 U 

現在,通過mapping字典pd.Series.map

df_new['Parent'] = df_new.List.map(mapping) 
df_new 
    List Parent 
0  1  NaN 
1  M  1.0 
3  N  1.0 
5  O  1.0 
6  2  NaN 
7  T  2.0 
9  Q  2.0 
10 3  NaN 
11 U  3.0 

可以使用df.Parent.fillna('N/A', inplace=True)轉換NaN'N/A'

+0

謝謝!這很棒。 –