У меня есть DataFrame
, который содержит nan
значений. Я хотел бы заполнить те nan
s значением индекса. Фактический прецедент заполняет nan
s строковым шаблоном, содержащим значение индекса, на которое вы можете ответить в качестве бонуса.Fill pandas DataFrame nans с индексом
Дано:
In [31]: df
Out[31]:
0 1 2 3
0 NaN 0.069419 NaN NaN
1 2.439000 1.943944 0.279904 0.755746
2 0.013795 1.189474 0.834894 2.202108
3 0.520385 NaN NaN 1.451822
4 0.153863 0.957394 NaN 0.052726
5 1.274204 NaN NaN 0.169636
6 NaN 1.031703 NaN 0.267850
7 0.419157 NaN NaN 0.409045
8 NaN 1.526764 0.947936 0.442226
9 NaN NaN NaN 0.458331
и
In [35]: tmp
Out[35]: 'i=%(idx)s'
Выход должен быть чем-то вроде следующего:
0 1 2 3
0 i=0 0.069419 i=0 i=0
1 2.439000 1.943944 0.279904 0.755746
2 0.013795 1.189474 0.834894 2.202108
3 0.520385 i=3 i=3 1.451822
4 0.153863 0.957394 i=4 0.052726
5 1.274204 i=5 i=5 0.169636
6 i=6 1.031703 i=6 0.267850
7 0.419157 i=7 i=7 0.409045
8 i=8 1.526764 0.947936 0.442226
9 i=9 i=9 i=9 0.458331
Просто пытаюсь заполнить nan
S с индексом.
Пытался
In [32]: df.fillna(df.index)
ValueError: invalid fill value with a <class 'pandas.core.index.Int64Index'>
Пытался
In [33]: df.replace(np.nan, df.index)
TypeError: Invalid "to_replace" type: 'float'
Пытался
In [41]: df.fillna(df.index.values)
ValueError: invalid fill value with a <type 'numpy.ndarray'>
Пытался
In [53]: df1 = df.astype(object)
и повторяя выше, получили те же ошибки.
Использование pandas==0.17.1
Ницца, +1 для '% timeit' –
Очень приятно, не знал об использовании' axis' для трансляции по столбцам – maxymoo