检索python中2个数据帧的第一次出现

2024-10-03 04:34:42 发布

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

我有一个第一个数据帧

Name  | Age
Teddy | 20
John  | 30

我有第二个数据帧,如下所示

Name  | Transport
Teddy | Airplane
Teddy | car
John  | motorocyel

我想在第一次出现时在左边合并。i、 e

Name  | Age | Transport
Teddy | 20  |  Airplane
John  | 30  |Morotorcyle

我能想到的最好的方法是删除第二个数据帧的重复数据,然后合并。但还有其他想法吗


Tags: 数据方法nameagejohncartransportairplane
2条回答

要获取组的第一个非空行,可以使用

df2.groupby('Name').first()

然后像往常一样合并/加入

我认为这是一种适当的方式。就个人而言,我会使用map而不是合并:

给定起始数据:

>>> df1
    Name  Age
0  Teddy   20
1   John   30

>>> df2
    Name   Transport
0  Teddy    Airplane
1  Teddy         car
2   John  motorocyel

使用map

# De-dupe and create map series
mymap=df2.drop_duplicates('Name').set_index('Name')['Transport']

# Map
df1['Transport'] = df1['Name'].map(mymap)

结果是:

>>> df1
    Name  Age   Transport
0  Teddy   20    Airplane
1   John   30  motorocyel

使用merge

或者,使用merge,正如您所说:

>>> df1.merge(df2.drop_duplicates('Name'))
    Name  Age   Transport
0  Teddy   20    Airplane
1   John   30  motorocyel

您还可以在合并后删除重复项(如果需要):

>>> df1.merge(df2).drop_duplicates('Name')
    Name  Age   Transport
0  Teddy   20    Airplane
2   John   30  motorocyel

相关问题 更多 >