python-3.x - 如何从具有相同结构的另一个数据帧的单行中填充数据帧的所有列
问题描述
我有 atrain_df
和 a test_df
,它们来自相同的原始数据框,但按一定比例分开以分别形成训练和测试数据集。
训练和测试数据帧都具有相同的结构:
- 带有每日存储桶的 PeriodIndex
- n 表示这些时间段中观察值的列数,例如销售额、价格等。
我现在想构造一个yhat_df
,它存储每一列的预测值。在“幼稚”的情况下,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()
试图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)
推荐阅读
- html - 为什么我们在应用 flex 和 grid 的属性时在 CSS 中使用大于号?
- ansible - 包含有条件的任务文件 - 任务仍在尝试运行?
- angular - 访问嵌套 FormGroup 中的 FormArray 以动态创建
- python - 解释区间 [0, 1] 中明显关系的舍入方向的惊人奇偶性
- c# - 从postgres中的json列中提取json数组数据
- java - 来自配置文件的依赖注入返回 null
- javascript - 计算数组中的真实出现并将它们绑定到角度变量
- oracle - 仅显示项目的会话状态保护冲突 - Oracle APEX 19.2.0.00.18
- javascript - 如何将文件上传到 Backblaze 上的特定文件夹?
- sql-server - 如何获取每个数据库的索引名称和索引碎片列表?