当前位置: 首页 > 知识库问答 >
问题:

熊猫用以前数据中的日期和值填充缺失的行

松思源
2023-03-14

假设我有以下数据。

dates=['2020-12-01','2020-12-04','2020-12-05', '2020-12-01','2020-12-04','2020-12-05']
symbols=['ABC','ABC','ABC','DEF','DEF','DEF']
v=[1,3,5,7,9,10]
df= pd.DataFrame({'date':dates, 'g':symbols, 'v':v})
         date    g   v
0  2020-12-01  ABC   1
1  2020-12-04  ABC   3
2  2020-12-05  ABC   5
3  2020-12-01  DEF   7
4  2020-12-04  DEF   9
5  2020-12-05  DEF  10

我想用以前的值填充缺少的日期(按字段“g”分组)。例如,我想在上面的示例中添加以下主菜:

2020-12-02 ABC 1
2020-12-03 ABC 1
2020-12-02 DEF 7
2020-12-03 DEF 7

我该怎么做呢?

共有1个答案

白智
2023-03-14

答案主要借用以下答案,除了用负值填充并使用它替换为空值进行正向填充。

原始答案在这里

dates=['2020-12-01','2020-12-04','2020-12-05', '2020-12-01','2020-12-04','2020-12-05']
symbols=['ABC','ABC','ABC','DEF','DEF','DEF']
v=[1,3,5,7,9,10]
df= pd.DataFrame({'date':dates, 'g':symbols, 'v':v})

df['date'] = pd.to_datetime(df['date'])

df = df.set_index(
    ['date', 'g']
).unstack(
    fill_value=-999
).asfreq(
    'D', fill_value=-999
).stack().sort_index(level=1).reset_index()

df.replace(-999, np.nan).ffill()
 类似资料:
  • 问题内容: 我有一个数据框架,如下所示 我想做的是在date列中找到最小和最大日期,并扩展该列使其具有所有日期,同时为该列填写。所以所需的输出是 问题答案: 初始数据框: 首先,将日期转换为日期时间: 然后,生成日期和唯一用户: 这将允许您创建一个MultiIndex: 您可以使用它来重新索引您的DataFrame: 然后可以按用户排序:

  • 欢迎提供任何关于这个问题更准确标题的帮助。。 我有一个数据框,其中包含客户级别的观察结果,记录日期以及客户在该日期消费的物品。看起来像这样。 此数据集中的每个观察值都与一个独特的存储日组合有关,但每个存储日观察值都是以消耗的物品的正数为条件列出的,即

  • 问题内容: 我的数据可以在给定日期包含多个事件,也可以在一个日期包含否事件。我接受这些事件,按日期计数并绘制它们。但是,当我绘制它们时,我的两个系列并不总是匹配。 在上面的代码中,idx变为30个日期范围。2019/09/01至2019/09/30但是S可能只有25或26天,因为在给定日期没有事件发生。然后,当我尝试绘图时,由于大小不匹配,我得到一个AssertionError: 解决这个问题的正

  • 问题内容: 如果我有一个包含多列的数据框,如何只填充一列?还是一组列? 我只知道如何按轴进行操作。 问题答案: tl; dr: 我还添加了一个自我包含的示例:

  • 向对象似乎很难完成。有3个与此相关的stackoverflow问题,没有一个给出有效的答案。 这就是我要做的。我有一个DataFrame,我已经知道它的形状以及行和列的名称。 现在,我有了一个迭代计算行值的函数。我如何用字典或?以下是失败的各种尝试: 显然,它试图添加一列而不是一行。 非常不具信息性的错误消息。 显然,这仅用于在数据框中设置单个值。 我不想忽略索引,否则结果如下: 它确实对齐了列名

  • 我有以下数据帧(示例): 我想在每小时的日期之间填写缺失的日期。因此,应填写日期之间缺少的每一小时,并且值应与之前的数据相同。以下是所需的输出: 所以我想知道是否可以使用每组每小时用列值中的前一个值填充缺失的日期?