如何使用 python 在两列中扩展具有日期范围的数据框?
Posted
技术标签:
【中文标题】如何使用 python 在两列中扩展具有日期范围的数据框?【英文标题】:How can I extend a data frame with date range in two columns using python? 【发布时间】:2020-06-28 13:04:39 【问题描述】:如何将数据帧中信息的时间范围扩展为新的数据帧。
我有一个数据框 df,其日期、字符串和因子类似于 这个: "start" "end" "note" "item"
2016-12-30 2017-01-03 Z 1
2017-09-10 2017-09-14 W 2
我想展开如下。
"start" "note" "item"
2016-12-30 Z 1
2016-12-31 Z 1
2017-01-01 Z 1
2017-01-02 Z 1
2017-01-03 Z 1
2017-09-10 W 2
2017-09-11 W 2
2017-09-12 W 2
2017-09-13 W 2
2017-09-14 W 2
我如何使用 python 来做到这一点。
【问题讨论】:
你没有尝试过吗? 不知道有没有快速有效的方法。它不应该减慢我的代码,因为我会将它应用到每一行。 @DelenaMalan 【参考方案1】:用途:
#convert columns to datetimes if necessary
df[['start','end']] = df[['start','end']].apply(pd.to_datetime)
#repeat datetimes to Series
s = pd.concat([pd.Series(r.Index,pd.date_range(r.start, r.end))
for r in df.itertuples()])
#repoeat values, remove end column and reaasign start by index values
df = df.loc[s].drop(['end'], axis=1).assign(start=s.index).reset_index(drop=True)
print (df)
start note item
0 2016-12-30 Z 1
1 2016-12-31 Z 1
2 2017-01-01 Z 1
3 2017-01-02 Z 1
4 2017-01-03 Z 1
5 2017-09-10 W 2
6 2017-09-11 W 2
7 2017-09-12 W 2
8 2017-09-13 W 2
9 2017-09-14 W 2
【讨论】:
以上是关于如何使用 python 在两列中扩展具有日期范围的数据框?的主要内容,如果未能解决你的问题,请参考以下文章
Android:在两列中显示信息,而不是 BaseAdapter 的一列