2017-01-04 23 views
1

私はfollow(黒)のようなテーブルを持っています。右に赤で表示されているような追加の列を作成したいと思います。基本的には、「スライス」列の各スライス変数に対して、「低い」列から対応する値を取得する必要があります。回答者のPython Pandas:スライスを変数として使用したテーブル操作

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

ワンをする:私はそれを行うの無数の方法を試してみました

enter image description here

は、私はすでに私もうまくいくアプローチの一つに対処しようとしてここに質問を投稿しましたその質問は、私は単にそれを達成する方法を尋ねることを示唆していたので、ここにいるのです。

私もそのデータフレームを再構築するためにコードの下に再投稿:

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

@jimbasquiもう一つの本当に肯定的な結果は、あなたの質問をより明確に表現する方法を学び、それをさらに活用することができるということです。 – piRSquared

+1

あなたの関数に.locと.ilocを使用していないのはなぜですか?スライスはインデックスnoの整数値に基づいていますか? –

関連する問題