我的df如下所示:

ds          | col1 | col2 |col3 |values
01/01/2020.    x0.     y0.  z0.   12
01/02/2020.    x0.     y0.  z0.   11
01/03/2020.    x1.     y0.  z0.   14
01/02/2020.    x0.     y1.  z0.   19
01/03/2020.    x0.     y1.  z0.   11

如果固定的开始日期=2020年1月1日,结束日期=2020年3月1日,我希望为col1、col2和col3的每个组合填充缺少的日期值.输出应如下所示:

ds          | col1 | col2 |col3 |values
01/01/2020.    x0.     y0.  z0.   12
01/02/2020.    x0.     y0.  z0.   11
01/03/2020.    x0.     y0.  z0.   NaN
01/01/2020.    x1.     y0.  z0.   Nan
01/02/2020.    x1.     y0.  z0.   Nan
01/03/2020.    x1.     y0.  z0.   14
01/01/2020.    x0.     y1.  z0.   Nan
01/02/2020.    x0.     y1.  z0.   19
01/03/2020.    x0.     y1.  z0.   11

推荐答案

try :

# ensure datetime:
df["ds"] = pd.to_datetime(df["ds"], dayfirst=True)

dr = pd.date_range("2020-01-01", "2020-03-01", freq="MS")


def reindex(df, cols_to_fill=("col1", "col2", "col3")):
    df = df.set_index("ds").reindex(dr)
    df.loc[:, cols_to_fill] = df.loc[:, cols_to_fill].ffill().bfill()
    return df.reset_index().rename(columns={"index": "ds"})


df = (
    df.groupby(["col1", "col2", "col3"], sort=False, group_keys=False)
    .apply(reindex)
    .reset_index(drop=True)
)
print(df)

打印:

          ds col1 col2 col3  values
0 2020-01-01   x0   y0   z0    12.0
1 2020-02-01   x0   y0   z0    11.0
2 2020-03-01   x0   y0   z0     NaN
3 2020-01-01   x1   y0   z0     NaN
4 2020-02-01   x1   y0   z0     NaN
5 2020-03-01   x1   y0   z0    14.0
6 2020-01-01   x0   y1   z0     NaN
7 2020-02-01   x0   y1   z0    19.0
8 2020-03-01   x0   y1   z0    11.0

Python相关问答推荐

比较两个数据帧并并排附加结果(获取性能警告)

Python解析整数格式说明符的规则?

PyQt5,如何使每个对象的 colored颜色 不同?'

NumPy中条件嵌套for循环的向量化

driver. find_element无法通过class_name找到元素'""

为一个组的每个子组绘制,

如何在TensorFlow中分类多个类

ConversationalRetrivalChain引发键错误

如何将数据帧中的timedelta转换为datetime

语法错误:文档. evaluate:表达式不是合法表达式

解决Geopandas和Altair中的正图和投影问题

按条件添加小计列

ModuleNotFoundError:Python中没有名为google的模块''

是否将Pandas 数据帧标题/标题以纯文本格式转换为字符串输出?

如何将验证器应用于PYDANC2中的EACHY_ITEM?

为什么在生成时间序列时,元组索引会超出范围?

更新包含整数范围的列表中的第一个元素

如何在networkx图中提取和绘制直接邻居(以及邻居的邻居)?

以元组为索引的Numpy多维索引

突出显示两幅图像之间的变化或差异区域