Pandasでデータ抽出挿入がうまくできないので教えていただけないでしょうか。
実現したいこと
下の表でCondがTrueの場合にOffset値だけシフトしてPrice値を入れた列を追加したい。
例えば、行2(Cond=True)の場合、Price 300 を 2つOffsetした行0に300を挿入
行3(Cond=True)の場合、Price 400 を 1つOffsetした行2に400を挿入
Python
1import pandas as pd 2 3df = pd.DataFrame({'Price': [150, 250, 300, 400, 500,550], 4 'Cond': [False, False, True, True, None, True], 5 'Offset': [None, None, 2, 1, None, 1]}) 6---------- 7 Price Cond Offset 80 150 False NaN 91 250 False NaN 102 300 True 2.0 113 400 True 1.0 124 500 None NaN 135 550 True 1.0
望む結果は次の通りです。
Python
1 Price Cond Offset NEW 20 150 False NaN 300 31 250 False NaN 42 300 True 2.0 400 53 400 True 1.0 64 500 None NaN 550 75 550 True 1.0
試したこと
以下のように5段階で処理しようと思いましたが最後のeの処理がわかりません。
a = df[(df['Cond']==True)].index #条件にあてはまるindex抽出
b = df.loc[(df['Cond']==True),'Offset'].astype("int64") #条件にあてはまるOffset抽出
c = a-b #新たなindex
d = df.loc[(df['Cond']==True),'Price'] #新たなPrice
e = d.reindex(c.index) #cとdの結果から新たなindex/Priceにしたい
どうかよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/23 02:57