如何用pandas基于日期范围与列表初始化时间序列DataFrame
你可以直接用pandas内置的MultiIndex.from_product方法生成两个集合的笛卡尔积,再转为DataFrame即可,完整实现代码如下:
首先确保你已经导入了依赖库:
import pandas as pd from datetime import date
使用你已生成的日期范围和列表做组合:
# 你已有的基础数据 date_range = pd.date_range(start='10/29/2021', end=date.today()) l = ['a','b','c'] # 生成全组合DataFrame df = pd.MultiIndex.from_product( iterables=[date_range, l], names=['date', 'category'] ).to_frame(index=False)
代码说明:
pd.MultiIndex.from_product会接收一组可迭代对象,自动生成所有元素的配对组合names参数可以直接指定最终生成的DataFrame的列名,和传入iterables的顺序一一对应to_frame(index=False)会将生成的多索引直接转为普通DataFrame,同时不保留索引列
如果你更习惯用表连接的方式实现,也可以用pandas的交叉连接写法(要求pandas版本≥1.2.0),输出结果和上面的写法完全一致:
df_date = pd.DataFrame({'date': date_range}) df_l = pd.DataFrame({'category': l}) df = df_date.merge(df_l, how='cross')
内容的提问来源于stack exchange,提问作者nununu
相关产品推荐
相关产品推荐

