【发布时间】:2018-12-05 08:23:56
【问题描述】:
假设我要数据帧,如下所示:
df=pd.DataFrame({'a':[1,4,3,2],'b':[1,2,3,4]})
df2=pd.DataFrame({'a':[1,2,3,4],'b':[1,2,3,4],'c':[34,56,7,55]})
我想按'a' 列上的df2 数据的顺序对df 数据进行排序,因此df.a 列将是df2.a 的顺序,并且使整个数据框按顺序排列.
期望的输出:
a b
0 1 1
1 2 4
2 3 3
3 4 2
(手动制作,如有错误,请告诉我:D)
我自己的尝试:
df = df.set_index('a')
df = df.reindex(index=df2['a'])
df = df.reset_index()
print(df)
按预期工作!!!,
但是当我有更长的数据帧时,例如:
df=pd.DataFrame({'a':[1,4,3,2,3,4,5,3,5,6],'b':[1,2,3,4,5,5,5,6,6,7]})
df2=pd.DataFrame({'a':[1,2,3,4,3,4,5,6,4,5],'b':[1,2,4,3,4,5,6,7,4,3]})
它没有按预期工作。
注意:我不仅想要解释原因,而且我还需要一个解决方案来为大数据帧做这件事
【问题讨论】:
-
@coldspeed 编辑我的,将测试。
-
@coldspeed 抱歉,
IndexError: positional indexers are out-of-bounds出现错误,np.searchsorted之一。我的版本是 0.19.2
标签: python python-3.x pandas sorting dataframe