2017-07-31 92 views
2

我有一個熊貓數據幀DF合併:添加行大熊貓DF與值與所有以前的值

name id value id_2 value_2 
a 1 10.5 2  20.3 
a 1 10.5 3  30.1 
a 2 20.3 1  10.5 
a 2 20.3 3  30.1 
a 3 30.1 1  10.5 
a 3 30.1 2  20.3 

注:for id 1 value = 10.5, id 2 value = 20.3, id 3 value = 30.1

你可以清楚地看到,每個ID被合併到所有其他ID在數據框中。

我要添加在數據幀的新行id = 4value = 40.7

,使得最終數據框的樣子:

name id value id_2 value_2 
a 4 40.7 1  10.5 
a 4 40.7 2  20.3 
a 4 40.7 3  30.1 
a 1 10.5 4  40.7 
a 2 20.3 4  40.7 
a 3 30.1 4  40.7 
+0

我認爲你的最後一個記錄,在你的輸入df上是不正確的。它不應該是[a,3,* 30.1 *,2,20.3]嗎? –

+0

@ScottBoston感謝您糾正我,我編輯問題 – Shubham

回答

0

你可以嘗試這樣的事情:

df_new_row = pd.DataFrame({'name':['a'],'id':[4],'value':[40.7]}) 

df_l = df[['id','value']].drop_duplicates().assign(key=1).merge(df_new_row.assign(key=1),on='key',suffixes=('','_2')) 
df_r = df[['id','value']].drop_duplicates().assign(key=1).merge(df_new_row.assign(key=1),on='key',suffixes=('_2','')) 

pd.concat([df,df_l,df_r]).drop('key',axis=1) 

輸出:

id id_2 name value value_2 
0 1  2 a 10.5  20.3 
1 1  3 a 10.5  30.1 
2 2  1 a 20.3  10.5 
3 2  3 a 20.3  30.1 
4 3  1 a 30.1  10.5 
5 3  2 a 30.1  20.3 
0 1  4 a 10.5  40.7 
1 2  4 a 20.3  40.7 
2 3  4 a 30.1  40.7 
0 4  1 a 40.7  10.5 
1 4  2 a 40.7  20.3 
2 4  3 a 40.7  30.1 
+0

@SRingne此解決方案有幫助嗎? –