2017-01-04 83 views
1

我有一張如下的表格(黑色)。我想創建一個額外的列,如紅色,右側可見。基本上對於「切片」列中的每個切片變量,我想從「低」列中檢索相應的值。Python Pandas:以切片作爲變量的表格操作

enter image description here

我試圖這樣做的無數的方法,我已經發布了一個問題在這裏試圖解決的辦法之一,我雖然會工作:

Python Pandas: Function doesn't work when used with apply()

之一受訪者那個問題表明我只是問如何實現它,因此我在這裏。

我也轉貼下面的代碼來重建該數據幀:

df = pd.DataFrame(dict, columns=["low", "slices"]) 

    {'low': {0: 1207.25, 
    1: 1207.5, 
    2: 1205.75, 
    3: 1206.0, 
    4: 1201.0, 
    5: 1202.75, 
    6: 1203.75}, 
'slices': {0: [slice(1, 1, None)], 
    1: [slice(1, 2, None), slice(2, 2, None)], 
    2: [slice(1, 3, None), slice(2, 3, None), slice(3, 3, None)], 
    3: [slice(1, 4, None), 
    slice(2, 4, None), 
    slice(3, 4, None), 
    slice(4, 4, None)], 
    4: [slice(1, 5, None), 
    slice(2, 5, None), 
    slice(3, 5, None), 
    slice(4, 5, None), 
    slice(5, 5, None)], 
    5: [slice(1, 6, None), 
    slice(2, 6, None), 
    slice(3, 6, None), 
    slice(4, 6, None), 
    slice(5, 6, None), 
    slice(6, 6, None)], 
    6: [slice(1, 7, None), 
    slice(2, 7, None), 
    slice(3, 7, None), 
    slice(4, 7, None), 
    slice(5, 7, None), 
    slice(6, 7, None), 
    slice(7, 7, None)]}} 

回答

2

定義函數這樣

def fun(slices): 
    return [df.low.loc[s].tolist() for s in slices] 

並申請在片列

df['slices_low'] = df.slices.apply(fun) 

df 

enter image description here

+1

^^我幾乎整整一天都在尋找那個人......我們應該做一天或兩天的大腦交換!無論如何非常感謝!有機會讓人們在這裏幫助真是太好了。 –

+0

@jimbasquiat另一個真正的積極結果是,你學會了如何更好地表達你的問題,並讓你自己更多地利用SO。 – piRSquared

+1

快速問題你爲什麼在你的函數中使用.loc而不是.iloc?切片是基於索引號的整數值? –