2013-04-12 43 views
2

假设我在熊猫中有两个数据帧xy,我想在x中填写一列,结果是对y中的一列进行排序。我尝试这样做:如何在忽略索引对齐的情况下分配列

x['foo'] = y['bar'].order(ascending=False) 

,但它没有工作,在分配过程中我怀疑因为熊猫对齐xy之间指数(它们具有相同的索引集)

哪有我有Pandas填充x['foo']与另一个数据框的另一列忽略索引的对齐?

回答

5

我能想到的最简单的方法是让pandas忽略索引,就是给它一些没有索引的东西来忽略。从

>>> x = pd.DataFrame({"foo": [10,20,30]},index=[1,2,0]) 
>>> y = pd.DataFrame({"bar": [33,11,22]},index=[0,1,2]) 
>>> x 
    foo 
1 10 
2 20 
0 30 
>>> y 
    bar 
0 33 
1 11 
2 22 

开始我们通常的做法一致:

>>> x["foo"] = y["bar"].order(ascending=False) 
>>> x 
    foo 
1 11 
2 22 
0 33 

或者未对齐的一个,通过设置x["foo"]到一个列表:

>>> x["foo"] = y["bar"].order(ascending=False).tolist() 
>>> x 
    foo 
1 33 
2 22 
0 11 
+1

我知道了,谢谢。 'my_series.tolist()'会比'np.array(my_series)'还是'my_series.values()'好? –

+2

除了在一些边界情况下,我不知道它是否会有很大的区别。想想看,'my_series.values'可能会更好,因为它不应该通过Python列表,所以可能会更快。 [检查..是的,至少有时它会更快。] – DSM

相关问题