如何从具有相同结构的另一个数据帧的单行中填充()数据帧的所有列

How to fillna() all columns of a dataframe from a single row of another dataframe with identical structure

我有一个 train_df 和一个 test_df,它们来自同一个原始数据帧,但按一定比例分开以分别形成训练和测试数据集。

训练数据帧和测试数据帧都具有相同的结构:

我现在想构建一个 yhat_df,它存储每一列的预测值。在 "naive" 情况下,yhat_df 列值只是最后观察到的训练数据集值。

所以我开始构建 yhat_df 如下:

import pandas as pd
yhat_df = pd.DataFrame().reindex_like(test_df)
yhat_df[train_df.columns[0]].fillna(train_df.tail(1).values[0][0], inplace=True)
yhat_df(train_df.columns[1]].fillna(train_df.tail(1).values[0][1], inplace=True)

这似乎有效,因为我只有两列,所以可以忍受额外的输入。

我想知道有没有更简单的方法,尤其是不需要我一栏一栏的方法。

我尝试了以下操作,但只是正确填充了 PeriodIndex 值匹配的列值。似乎 fillna() 试图在 Index:

内部做一些 join()
yhat_df.fillna(train_df.tail(1), inplace=True)

如果我能想出一种方法让 fillna() 忽略索引,也许这行得通?

你可以使用 fillna 和字典来用不同的值填充每一列,所以我认为:

yhat_df = yhat_df.fillna(train_df.tail(1).to_dict('records')[0])

应该可以,但如果我很了解你的工作,那么甚至可以直接创建数据框:

yhat_df = pd.DataFrame(train_df.tail(1).to_dict('records')[0], 
                       index = test_df.index, columns = test_df.columns)