如何从具有相同结构的另一个数据帧的单行中填充()数据帧的所有列
How to fillna() all columns of a dataframe from a single row of another dataframe with identical structure
我有一个 train_df
和一个 test_df
,它们来自同一个原始数据帧,但按一定比例分开以分别形成训练和测试数据集。
训练数据帧和测试数据帧都具有相同的结构:
- 带每日桶的 PeriodIndex
- n 列表示这些时间段中的观察值,例如销售额、价格等
我现在想构建一个 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)
我有一个 train_df
和一个 test_df
,它们来自同一个原始数据帧,但按一定比例分开以分别形成训练和测试数据集。
训练数据帧和测试数据帧都具有相同的结构:
- 带每日桶的 PeriodIndex
- n 列表示这些时间段中的观察值,例如销售额、价格等
我现在想构建一个 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)