2017-07-31 75 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此解决方案有帮助吗? –