python – Pandas中的Dataframe合并

前端之家收集整理的这篇文章主要介绍了python – Pandas中的Dataframe合并前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

出于某种原因,我无法使此合并正常工作.

这个Dataframe(rspars)有2000行……

    rsparid  f1mult  f2mult  f3mult
 0        1   0.318   0.636   0.810
 1        2   0.348   0.703   0.893
 2        3   0.384   0.777   0.000
 3        4   0.296   0.590   0.911
 4        5   0.231   0.458   0.690
 5        6   0.275   0.546   0.839
 6        7   0.248   0.486   0.731
 7        8   0.430   0.873   0.000
 8        9   0.221   0.438   0.655
 9       11   0.204   0.399   0.593

当试图将上面的表连接到基于rsparid列到此Dataframe的表时…

            line_track  line_race rsparid
 line_date                               
 2013-03-23         TP         10    1400
 2013-02-23         GP          7     634
 2013-01-01         GP          7    1508
 2012-11-11        AQU          5      96
 2012-10-11        BEL          2     161

用这个……

 df = pd.merge(datalines,rspars,how='left',on='rsparid')

我得到空白..

   line_track  line_race rsparid  f1mult  f2mult  f3mult
 0         TP         10    1400     NaN     NaN     NaN
 1         TP         10    1400     NaN     NaN     NaN
 2         TP         10    1400     NaN     NaN     NaN
 3         GP          7     634     NaN     NaN     NaN
 4         GP         10     634     NaN     NaN     NaN

注意,“datalines”列可以比rspar多数千行,因此左连接.我一定做错了什么?

我也这样试过……

 df = datalines.merge(rspars,on='rsparid')

例2

我把数据放到了几行……

rspars:

    rsparid  f1mult  f2mult  f3mult
 0     1400   0.216   0.435   0.656

datalines:

   rsparid
 0    1400
 1     634
 2    1508
 3      96
 4     161
 5    1011
 6    1007
 7     518
 8    1955
 9     678

合并…

 datalines.merge(rspars,on='rsparid')

输出

   rsparid  f1mult  f2mult  f3mult
 0    1400     NaN     NaN     NaN
 1     634     NaN     NaN     NaN
 2    1508     NaN     NaN     NaN
 3      96     NaN     NaN     NaN
 4     161     NaN     NaN     NaN
 5    1011     NaN     NaN     NaN
 6    1007     NaN     NaN     NaN
 7     518     NaN     NaN     NaN
 8    1955     NaN     NaN     NaN
 9     678     NaN     NaN     NaN
最佳答案
NaNs意味着它们在rsparid中没有共同的值.当合并他们重新编写时看起来相同的东西时,这可能会很棘手

具有字符串(整数)或整数的小型DataFrame的repr看起来相同,并且当帧很小时不打印dtype信息.您可以通过调用DataFrame.info()方法获取小帧的这些信息(以及更多信息),如下所示:df.info().这将为您提供有关DataFrame中的内容以及其列的dtypes的精彩摘要

In [205]: datalines_int = DataFrame({'rsparid':[1400,634,1508,96,161,1011,1007,518,1955,678]})

In [206]: datalines_str = DataFrame({'rsparid':map(str,[1400,678])})

In [207]: datalines_int
Out[207]:
   rsparid
0     1400
1      634
2     1508
3       96
4      161
5     1011
6     1007
7      518
8     1955
9      678

In [208]: datalines_str
Out[208]:
  rsparid
0    1400
1     634
2    1508
3      96
4     161
5    1011
6    1007
7     518
8    1955
9     678

In [209]: datalines_int.info()

注意:您会注意到这里的reprs略有不同,很可能是因为数字DataFrame的填充.重点是,除非他们专门寻找差异,否则没有人真正能够以交互方式看到它.

猜你在找的Python相关文章