按另一个列表的顺序对齐三列数据帧

2024-09-29 19:28:03 发布

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

我有一个pandas数据框,其中包含一系列名称及其坐标:

name1 3 100
name2 5 4
name3 7 5
...
name88 100 300
name21 30 40

我有另一个列表,它是一个单列系列,只有按特定顺序排列的名称

name3
name10
name2
name6
...
name30

这两个数据帧的行数相同,但我需要对第一个数据帧重新排序,以便名称顺序与第二个数据帧的顺序匹配

我的想法是使用pandas groupby函数,并使用该函数根据第二个数据帧对第一个数据帧进行分组,但我还没有实现

但任何想法都会有帮助


Tags: 数据函数名称pandas列表排序顺序name1
3条回答

一种方法是简单地对索引上的两个帧进行排序(假设索引是name,如果不是,则通过DataFrame.set_index将其设置为索引)

DataFrame.sort_index

另一种方法是简单地将索引上的这两个数据集连接起来(同样,假设name是索引)

DataFrame.join

假设数据帧中的names列名为Name,而另一个系列名为names。那么这应该是:

 df = df.set_index('Name').reindex(index=names).reset_index()

另一种方法是设置分类列并按以下方式排序:

假设两列都被称为名称,并且您有df1&;df2

sorter = pd.Categorical(df1['name'], df2['names'])

df_sort = df1.assign(sort=sorter).sort_values('sort').drop('sort',axis=1)

相关问题 更多 >

    热门问题