gpt4 book ai didi

python-3.x - 如何将缺失的时间序列数据行添加到 python 中的 Pandas 数据帧

转载 作者:行者123 更新时间:2023-12-05 03:46:07 28 4
gpt4 key购买 nike

我有一个产品的时间序列数据集如下:

date    product price   amount
11/17/2019 A 10 20
11/19/2019 A 15 20
11/24/2019 A 20 30
12/01/2019 C 40 50
12/05/2019 C 45 35

此数据在每个产品的数据开始日期和结束日期之间缺少天数(“MM/dd/YYYY”)。我正在尝试用零行填充缺失的日期,并将之前的表格转换为下面给出的表格:

date    product price   amount
11/17/2019 A 10 20
11/18/2019 A 0 0
11/19/2019 A 15 20
11/20/2019 A 0 0
11/21/2019 A 0 0
11/22/2019 A 0 0
11/23/2019 A 0 0
11/24/2019 A 20 30
12/01/2019 C 40 50
12/02/2019 C 0 0
12/03/2019 C 0 0
12/04/2019 C 0 0
12/05/2019 C 45 35

为了获得这种转化,我使用了代码:

import pandas as pd
import numpy as np
data=pd.read_csv("test.txt", sep="\t", parse_dates=['date'])
data=data.set_index(["date", "product"])
start=data.first_valid_index()[0]
end=data.last_valid_index()[0]
df=data.set_index("date").reindex(pd.date_range(start,end, freq="1D"), fill_values=0)

但是代码给出了一个错误。有什么方法可以有效地实现这种转化?

最佳答案

如果需要为每个 product 分别添加 0 缺少的日期时间,请使用 GroupBy.apply 中的自定义函数与 DataFrame.reindex按最小和最大日期时间:

df = pd.read_csv("test.txt", sep="\t", parse_dates=['date'])

f = lambda x: x.reindex(pd.date_range(x.index.min(),
x.index.max(), name='date'), fill_value=0)
df = (df.set_index('date')
.groupby('product')
.apply(f)
.drop('product', axis=1)
.reset_index())
print (df)
product date price amount
0 A 2019-11-17 10 20
1 A 2019-11-18 0 0
2 A 2019-11-19 15 20
3 A 2019-11-20 0 0
4 A 2019-11-21 0 0
5 A 2019-11-22 0 0
6 A 2019-11-23 0 0
7 A 2019-11-24 20 30
8 C 2019-12-01 40 50
9 C 2019-12-02 0 0
10 C 2019-12-03 0 0
11 C 2019-12-04 0 0
12 C 2019-12-05 45 35

关于python-3.x - 如何将缺失的时间序列数据行添加到 python 中的 Pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65420247/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com