У меня есть два кадра данных df1 и df2 одинакового размера и размеров. Есть ли простой способ скопировать все значения NaN из 'df1' в 'df2'? Пример ниже демонстрирует вывод, который я хочу получить от .copynans()

In: df1
Out:
                   10053802  10053856  10053898  10058054
2012-07-01 00:00:00     100.0     0.353     0.300     0.326
2012-07-01 00:30:00     101.0     0.522     0.258     0.304
2012-07-01 01:00:00     102.0     0.311     0.369     0.228
2012-07-01 01:30:00     103.0       NaN     0.478     0.247
2012-07-01 02:00:00     101.0       NaN       NaN     0.259
2012-07-01 02:30:00     102.0     0.281       NaN     0.239
2012-07-01 03:00:00     125.0     0.320       NaN     0.217
2012-07-01 03:30:00     136.0     0.288       NaN     0.283

In: df2
Out:  
                    10053802  10053856  10053898  10058054
2012-07-01 00:00:00       1.0        2.0      3.0       4.0
2012-07-01 00:30:00       1.0        2.0      3.0       4.0
2012-07-01 01:00:00       1.0        2.0      3.0       4.0
2012-07-01 01:30:00       1.0        2.0      3.0       4.0
2012-07-01 02:00:00       1.0        2.0      3.0       4.0
2012-07-01 02:30:00       1.0        2.0      3.0       4.0
2012-07-01 03:00:00       1.0        2.0      3.0       4.0
2012-07-01 03:30:00       1.0        2.0      3.0       4.0

In: df2.copynans(df1)
Out:
                     10053802  10053856  10053898  10058054
2012-07-01 00:00:00       1.0       2.0       3.0       4.0
2012-07-01 00:30:00       1.0       2.0       3.0       4.0
2012-07-01 01:00:00       1.0       2.0       3.0       4.0
2012-07-01 01:30:00       1.0       NaN       3.0       4.0
2012-07-01 02:00:00       1.0       NaN       NaN       4.0
2012-07-01 02:30:00       1.0       2.0       NaN       4.0
2012-07-01 03:00:00       1.0       2.0       NaN       4.0
2012-07-01 03:30:00       1.0       2.0       NaN       4.0
1
doctorer 25 Апр 2017 в 06:07

2 ответа

Лучший ответ

Или

df1.where(df2.notnull())

Или же

df1.mask(df2.isnull())
3
piRSquared 25 Апр 2017 в 03:48
#Use null cells from df1 as index to set the the corresponding cell to nan in df2
df2[df1.isnull()]=np.nan
2
Allen 25 Апр 2017 в 03:13
43600901