2013-04-12 79 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

相關問題