我有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
但我只为第一条记录获得population
,cnt
和cod
的值。是否有任何方法可以为population
cnt
和cod
字段的所有行填充第一条记录中的值
答案 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