如何根据熊猫数据框中的一列添加虚拟行?



我正在使用熊猫,所以基本上我有两个数据帧,并且在两种情况下的行数都不同:

东风

wave  num  stlines     fwhm       EWs  MeasredWave  
0    4050.32    3  0.28269  0.07365  22.16080  4050.311360   
1    4208.98    5  0.48122  0.08765  44.90035  4208.972962   
2    4374.94    9  0.71483  0.11429  86.96497  4374.927110   
3    4379.74    9  0.31404  0.09107  30.44271  4379.760601   
4    4398.01   14  0.50415  0.09845  52.83236  4398.007473 
5    5520.50    1  0.06148  0.12556   8.21685  5520.484742   

DF1

wave  num  stlines     fwhm       EWs  MeasredWave  
0    4050.32    3  0.28616  0.07521  22.91064  4050.327388   
1    4208.98    6  0.48781  0.08573  44.51609  4208.990029   
2    4374.94    9  0.71548  0.11437  87.10152  4374.944513   
3    4379.74   10  0.31338  0.09098  30.34791  4379.778009   
4    4398.01   15  0.49950  0.08612  45.78707  4398.020367   
5    4502.21    9  0.56362  0.10114  60.67868  4502.223123   
6    4508.28    3  0.69554  0.11600  85.88428  4508.291777   
7    4512.99    2  0.20486  0.08891  19.38745  4512.999332
8    5520.50    1  0.06148  0.12556   8.21685  5520.484742

所以df1中有一些行不在df.所以我想将行添加到数据帧并相应地重置索引。以前我只是从数据帧中删除多余的行以使它们相等,但现在我只想添加列索引不存在的空行。

所需的结果应如下所示,

wave  num  stlines     fwhm       EWs  MeasredWave  
0    4050.32    3  0.28269  0.07365  22.16080  4050.311360   
1    4208.98    5  0.48122  0.08765  44.90035  4208.972962   
2    4374.94    9  0.71483  0.11429  86.96497  4374.927110   
3    4379.74    9  0.31404  0.09107  30.44271  4379.760601   
4    4398.01   14  0.50415  0.09845  52.83236  4398.007473 
5    4502.21    0       0      0         0         0   
6    4508.28    0       0      0         0         0   
7    4512.99    0       0      0         0         0
8    5520.50    1  0.06148  0.12556   8.21685  5520.484742  

我怎样才能得到这个?

IIUC,您可以使用DataFrame.loc来更新df中不存在wavedf1的值:

df1.loc[~df1.wave.isin(df.wave), 'num':] = 0

然后使用DataFrame.combine_first确保df中的值优先:

df_out = df.set_index('wave').combine_first(df1.set_index('wave')).reset_index()

[出]

print(df_out)
wave   num  stlines     fwhm       EWs  MeasredWave
0  4050.32   3.0  0.28269  0.07365  22.16080  4050.311360
1  4208.98   5.0  0.48122  0.08765  44.90035  4208.972962
2  4374.94   9.0  0.71483  0.11429  86.96497  4374.927110
3  4379.74   9.0  0.31404  0.09107  30.44271  4379.760601
4  4398.01  14.0  0.50415  0.09845  52.83236  4398.007473
5  4502.21   0.0  0.00000  0.00000   0.00000     0.000000
6  4508.28   0.0  0.00000  0.00000   0.00000     0.000000
7  4512.99   0.0  0.00000  0.00000   0.00000     0.000000
8  5520.50   1.0  0.06148  0.12556   8.21685  5520.484742

最新更新