gpt4 book ai didi

python - Pandas - 使用 daterange 扩展数据框

转载 作者:太空宇宙 更新时间:2023-11-04 07:53:14 25 4
gpt4 key购买 nike

我有以下数据框:

 name    from       amount   days
A 7/31/18 200 1
B 7/31/18 300 1
C 7/30/18 200 1
D 7/27/18 100 3
......
G 7/17/18 50 1
H 7/13/18 150 4

我想将它扩展到这个,其中天数不等于 1:

 name    from       amount   days
A 7/31/18 200 1
B 7/31/18 300 1
C 7/30/18 200 1
D 7/29/18 100 3
D 7/28/18 100 3
D 7/27/18 100 3
......
G 7/17/18 50 1
H 7/16/18 150 4
H 7/15/18 150 4
H 7/14/18 150 4
H 7/13/18 150 4

如果可能的话,我还想添加一个可以区分原始数据和扩展数据的列(因为我最终需要过滤一些日期):

 name    from       amount   days   original
A 7/31/18 200 1 1
B 7/31/18 300 1 1
C 7/30/18 200 1 1
D 7/29/18 100 3 0
D 7/28/18 100 3 0
D 7/27/18 100 3 1
......
G 7/17/18 50 1 1
H 7/16/18 150 4 0
H 7/15/18 150 4 0
H 7/14/18 150 4 0
H 7/13/18 150 4 1

编辑:阐明扩展:Days 会告诉您它需要扩展到多少行。或者,您可以使用原始值上方的日期作为边界(条目 7/27 where days=3 将停止在上面的日期为 7/30 的值处。数据有约束以确保它永远不会重叠)。

最佳答案

大约两步创建dataframe(reindex),调整值(duplicated)

newdf=df.reindex(df.index.repeat(df.days)) # create the df using reindex
adddate=pd.Series(np.concatenate(df.days.apply(np.arange).values),index=newdf.index)# create the timedelta to add
newdf['from']=pd.to_datetime(newdf['from'])+pd.to_timedelta(adddate,unit='d')# assign the value
newdf['original']=(~newdf.index.duplicated()).astype(int)
newdf
Out[240]:
name from amount days original
0 A 2018-07-31 200 1 1
1 B 2018-07-31 300 1 1
2 C 2018-07-30 200 1 1
3 D 2018-07-27 100 3 1
3 D 2018-07-28 100 3 0
3 D 2018-07-29 100 3 0

关于python - Pandas - 使用 daterange 扩展数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52205595/

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