我有2个dfs:
df1
ponder valor
X 0.977011 145.000
X 0.833333 -421.660
Y 0.649425 1408.500
W 0.609195 560.500
Z 0.471264 132.300
Y 0.431034 -1439.250
X 0.321839 435.116
df2
sub_0
B 10
X 12
C 16
Z 9
我想生成一个新的df,它连接与相应轴匹配的值,并添加df2
中df1
中不存在的值,在这种情况下:B
和C
。
简而言之,所需的输出将如下所示:
ponder valor sub_0
X 0.977011 145.000 12
X 0.833333 -421.660 12
Y 0.649425 1408.500 Nan
W 0.609195 560.500 Nan
Z 0.471264 132.300 9
Y 0.431034 -1439.250 Nan
X 0.321839 435.116 12
B Nan Nan 10
C Nan Nan 16
join
函数的问题在于它只保留了join函数中声明的第一个df的索引值:
sub_0 ponder valor
B 10 NaN NaN
Z 9 0.609195 560.500
C 16 NaN NaN
X 12 0.977011 145.000
X 12 0.321839 435.116
X 12 0.833333 -421.660
我如何获得所需的输出?
答案 0 :(得分:2)
您可以对索引执行外部合并:
df1.merge(df2, left_index=True, right_index=True, how='outer')
ponder valor sub_0
B NaN NaN 10.0
C NaN NaN 16.0
W 0.609195 560.500 NaN
X 0.977011 145.000 12.0
X 0.833333 -421.660 12.0
X 0.321839 435.116 12.0
Y 0.649425 1408.500 NaN
Y 0.431034 -1439.250 NaN
Z 0.471264 132.300 9.0
答案 1 :(得分:2)
如果订单很重要,您应该使用合并,否则,您可以使用combine_first
df1.combine_first(df2)
Out[273]:
ponder sub_0 valor
B NaN 10.0 NaN
C NaN 16.0 NaN
W 0.609195 NaN 560.500
X 0.977011 12.0 145.000
X 0.833333 12.0 -421.660
X 0.321839 12.0 435.116
Y 0.649425 NaN 1408.500
Y 0.431034 NaN -1439.250
Z 0.471264 9.0 132.300
或
df1.join(df2,how='outer')
Out[282]:
ponder valor sub_0
B NaN NaN 10.0
C NaN NaN 16.0
W 0.609195 560.500 NaN
X 0.977011 145.000 12.0
X 0.833333 -421.660 12.0
X 0.321839 435.116 12.0
Y 0.649425 1408.500 NaN
Y 0.431034 -1439.250 NaN
Z 0.471264 132.300 9.0