У меня есть такой DataFrame (это его мультииндексированных DataFrame Я не уверен, если я понимаю, это правильно ...?):панды - выбор более низкого уровня в DataFrame сделать ffill
df = pd.DataFrame({'index' : range(8),
'variable1' : ["A","A","B","B","A","B","B","A"],
'variable2' : ["a","b","a","b","a","b","a","b"],
'variable3' : ["x","x","x","y","y","y","x","y"],
'result': [1,0,0,1,1,0,0,1]})
df2 = df.pivot_table(values='result',rows='index',cols=['variable1','variable2','variable3'])
variable1 A B
variable2 a b a b
variable3 x y x y x y
index
0 1 NaN NaN NaN NaN NaN
1 NaN NaN 0 NaN NaN NaN
2 NaN NaN NaN NaN 0 NaN
3 NaN NaN NaN NaN NaN 1
4 NaN 1 NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN 0
6 NaN NaN NaN NaN 0 NaN
7 NaN NaN NaN 1 NaN NaN
сейчас то, что я хочу сделать, это ffill()
значения, но только для variable3 == 'y'
. Желаемый результат:
variable1 A B
variable2 a b a b
variable3 x y x y x y
index
0 1 NaN NaN NaN NaN NaN
1 NaN NaN 0 NaN NaN NaN
2 NaN NaN NaN NaN 0 NaN
3 NaN NaN NaN NaN NaN 1
4 NaN 1 NaN NaN NaN 1
5 NaN 1 NaN NaN NaN 0
6 NaN 1 NaN NaN 0 0
7 NaN 1 NaN 1 NaN 0
Я знаю, что могу сделать это итерация variable1
и variable2
, для каждого из них делает что-то вроде:
df2['A']['a']['y'].ffill()
Но я предполагаю, что должен быть способ, чтобы избежать это ...
Великим. В производственной ситуации я борюсь с 'AttributeError: _ref_locs', но я думаю, что это не связано ... –
было несколько ошибок в 0.12, которые вызывают это (это связано с дубликатами в столбцах). – Jeff