Я работаю с Python 3.6.5.
Вот небольшой скрипт для генерации мультииндексного фрейма данных с некоторым значением "NaN".
import pandas as pd
import numpy as np
att_1 = ['X', 'Y']
att_2 = ['a', 'b']
df_1 = pd.DataFrame(np.random.randint(10,19,size=(5, 2)), columns=att_2,
index=[10,20,30,35,40])
df_2 = pd.DataFrame(np.random.randint(20,29,size=(5, 2)), columns=att_2,
index=[20,25,40,50,80])
# Concat df with new key dimension for column attribute
df = pd.concat([df_1, df_2], keys=att_1, axis=1)
Я получаю этот фрейм данных
print(df)
X Y
a b a b
10 17.0 17.0 NaN NaN
20 15.0 11.0 20.0 28.0
25 NaN NaN 23.0 24.0
30 12.0 16.0 NaN NaN
35 10.0 10.0 NaN NaN
40 15.0 14.0 25.0 28.0
50 NaN NaN 22.0 22.0
80 NaN NaN 23.0 21.0
И я хотел бы заменить значение «NaN» последним действительным значением, НО ТОЛЬКО ДЛЯ ОДНОЙ КОЛОННЫ.Например, я хотел бы получить это (для столбца с именем 'X', 'b')
print(df)
X Y
a b a b
10 17.0 17.0 NaN NaN
20 15.0 11.0 20.0 28.0
25 NaN 11.0 23.0 24.0
30 12.0 16.0 NaN NaN
35 10.0 10.0 NaN NaN
40 15.0 14.0 25.0 28.0
50 NaN 14.0 22.0 22.0
80 NaN 14.0 23.0 21.0
Я пробовал это:
# Replace NaN value by last valid value for column named 'X','b'
df['X']['b'].fillna(method='ffill', inplace=True)
Но я получаю эту ошибку «Значение пытается быть установлено для копии фрагмента из DataFrame»
Я не могу найти никакого решения для фрейма данных с многоиндексным столбцом.Я нашел эту ссылку, которая не дает мне надежды.(https://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.MultiIndex.fillna.html)
У кого-нибудь есть идеи, чтобы помочь мне?