Pandas加入或合并2个数据帧1,其中包含1个记录,另一个具有多个记录

时间:2016-11-08 05:15:07

标签: python python-2.7 python-3.x

我有2个数据框

df1 = 
 city.population  city.sys.population  cnt  cod  message  tmp
               0                    0   38  200   0.1642    1

DF2 =

  A                    B   C   D       E       tmp
  0                    0   38  200   0.1642    1
  0                    0   38  200   0.1642    1
  0                    0   38  200   0.1642    1
  0                    0   38  200   0.1642    1

我想在tmp上合并/加入两个数据帧,并且应该得到像

这样的结果
A                    B   C   D       E       tmp       population cnt cod
0                    0   38  200   0.1642    1         0          38  200
0                    0   38  200   0.1642    1         0          38  200
0                    0   38  200   0.1642    1         0          38  200
0                    0   38  200   0.1642    1         0          38  200

但我只为第一条记录获得populationcntcod的值。是否有任何方法可以为population cntcod字段的所有行填充第一条记录中的值

2 个答案:

答案 0 :(得分:0)

您可以使用append连接两个数据框。你试过吗?

df1.append(df2)
df1.head()

如果有效,请告诉我。

有关文档的更多信息,请参阅 http://pandas.pydata.org/pandas-docs/version/0.15.2/merging.html

答案 1 :(得分:0)

df3 = pd.merge(df2, df1, on='tmp', how='outer')应该会给你你想要的东西。如果您熟悉该术语,这相当于SQL中的完全外连接。

这样做是将两个数据帧df1和df2一起刷,以便df3.tmp列等于df1.tmp和df2.tmp中值的并集(即您将获得的值列表)如果你做了df1.tmp + df2.tmp。那么df2中有df2.tmp == 1的任何行都会从df1获取信息df1.tmp == 1如果要包含df1和df2中的所有数据,这将有效。这样,如果df1中的列的'tmp'中的值不在df2中,则新数据帧将具有A,B,C,D,E列和来自df1的数据的“NaN”值,但是你不会在合并中丢失任何数据。

例如,如果df1 =

pop  syspop    ct    cod     msg  tmp
0    0.0     0.0  30.0  200.0  0.1642  1.0
1  0.0     0.0   0.0    0.0  0.0000  3.0`

然后df3 =

    a    b     c      d       e  tmp  pop  syspop    ct    cod       msg
0  0.0  0.0  38.0  200.0  0.1642  1.0  0.0     0.0  30.0  200.0  0.1642
1  0.0  0.0  38.0  200.0  0.1642  1.0  0.0     0.0  30.0  200.0  0.1642
2  0.0  0.0  38.0  200.0  0.1642  1.0  0.0     0.0  30.0  200.0  0.1642
3  0.0  0.0  38.0  200.0  0.1642  1.0  0.0     0.0  30.0  200.0  0.1642
4  0.0  0.0   0.0    0.0  0.0000  2.0  NaN     NaN   NaN    NaN     NaN

如果你想要df1和df2的其他组合(例如,你不关心df1中任何不在df2中的值),你可以改变'how'参数。有关详细信息,请参阅此处的pandas文档: http://pandas.pydata.org/pandas-docs/stable/merging.html#brief-primer-on-merge-methods-relational-algebra