【发布时间】:2017-12-22 15:07:45
【问题描述】:
我有一个如下所示的 Pandas DataFrame,具有每小时时间索引和对应于特定位置的列名:
df1.head()
33643 33667 33668 33677 33678 33680 33681 33686
1998-01-01 10:00:00 NaN NaN NaN NaN NaN NaN NaN NaN
1998-01-01 11:00:00 NaN NaN NaN NaN NaN NaN NaN NaN
1998-01-01 12:00:00 NaN NaN NaN NaN NaN NaN NaN NaN
1998-01-01 13:00:00 NaN NaN NaN NaN NaN NaN NaN NaN
1998-01-01 14:00:00 322.0 343.0 323.0 341.0 342.0 342.0 341.0 343.0
我有第二个 Pandas DataFrame,其索引和列名相同,但变量不同。
df2.head()
33643 33667 33668 33677 33678 33680 33681
1998-01-01 10:00:00 289.59 286.07 286.52 284.77 285.17 284.17 284.44
1998-01-01 11:00:00 289.83 286.31 286.76 285.00 285.40 284.39 284.66
1998-01-01 12:00:00 290.08 286.63 287.08 285.33 285.73 284.73 284.99
1998-01-01 13:00:00 290.39 287.27 287.68 286.10 286.46 285.56 285.80
1998-01-01 14:00:00 291.10 289.14 289.39 288.42 288.64 288.09 288.23
我想找到 df1 中的值等于 np.nan 的位置,如果是,则为 df2 中的相应单元格插入 np.nan。我试过查看docs,但我没有发现它们有多大用处。其他 Stackoverflow 页面并不是很有帮助。这是我想要的输出:
df3.head()
33643 33667 33668 33677 33678 33680 33681 33686
1998-01-01 10:00:00 NaN NaN NaN NaN NaN NaN NaN NaN
1998-01-01 11:00:00 NaN NaN NaN NaN NaN NaN NaN NaN
1998-01-01 12:00:00 NaN NaN NaN NaN NaN NaN NaN NaN
1998-01-01 13:00:00 NaN NaN NaN NaN NaN NaN NaN NaN
1998-01-01 14:00:00 291.10 289.14 289.39 288.42 288.64 288.09 288.23 289.12
我尝试过的事情:
df3 = pd.DataFrame(np.where(df1[:] == np.nan, df2[:] == np.nan, df2[:]))
df3 = df2.where(df1.iloc[:,:] == np.nan, np.nan)
有什么建议吗?我走对了吗?
【问题讨论】:
标签: python python-3.x pandas