Pandas连接或合并2个数据帧,1个有1条记录,另一个有多条记录

2024-09-30 14:15:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧

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的值。有没有办法让第一条记录中的值为populationcntcod字段的所有行填充


Tags: 数据citymessagesys记录tmpcoddf1
2条回答

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中,那么您的新dataframe将为列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”参数。有关更多信息,请参阅此处的熊猫文档: http://pandas.pydata.org/pandas-docs/stable/merging.html#brief-primer-on-merge-methods-relational-algebra

可以用append连接两个数据帧。你试过了吗?你知道吗

df1.append(df2)
df1.head()

如果有用就告诉我。你知道吗

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

相关问题 更多 >

    热门问题