Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何合并具有重复行的两个数据帧?_Python 3.x_Pandas_Merge - Fatal编程技术网

Python 3.x 如何合并具有重复行的两个数据帧?

Python 3.x 如何合并具有重复行的两个数据帧?,python-3.x,pandas,merge,Python 3.x,Pandas,Merge,我有两个数据帧df1和df2。df1有重复的文本wrt列name,但列hobby发生了变化。df2列的name中也有重复的文本。我想合并两个数据帧并保留所有内容 df1: name hobby mike cricket mike football jack chess jack football jack vollyball pieter sleeping pieter cyclying 我的df2是 df2: name mike pieter jack

我有两个数据帧
df1
df2
df1
有重复的文本wrt列
name
,但列
hobby
发生了变化。
df2
列的
name
中也有重复的文本。我想合并两个数据帧并保留所有内容

df1:
name   hobby

mike   cricket 
mike   football
jack   chess
jack   football
jack   vollyball
pieter sleeping
pieter cyclying

我的
df2

df2:
name

mike
pieter 
jack  
mike
pieter 
现在我必须在
name
列中将
df2
df1
合并 因此,我的结果
df3
应该如下所示:

df3:
name   hobby

mike   cricket 
mike   football
pieter sleeping
pieter cyclying
jack   chess
jack   football
jack   vollyball
mike   cricket 
mike   football
pieter sleeping
pieter cyclying



IIUC,您要为
df2
分配一个顺序,在
name
上合并,然后按所述顺序排序:

(df2.assign(rank=np.arange(len(df2)))
    .merge(df1, on='name')
    .sort_values('rank')
    .drop('rank', axis=1)
)
输出:

      name      hobby
0     mike    cricket
1     mike   football
4   pieter   sleeping
5   pieter   cyclying
8     jack      chess
9     jack   football
10    jack  vollyball
2     mike    cricket
3     mike   football
6   pieter   sleeping
7   pieter   cyclying