我有一个如下所示的数据集:
Category Date 1 Date 2
a 2017-01-01 2017-08-01
我想要做的是转置这些数据,以便我在两个日期之间的每个月都有一个记录
例如
Category Date
a 2017-01-01
a 2017-02-01
a 2017-03-01
.....
a 2017-08-01
我需要在 python 中执行此操作,并且我的数据已经在 Pandas 数据框中。日期采用日期戳格式 YYYY-MM-DD
最佳答案
使用 pd.date_range
的理解
pd.DataFrame(
[[c, d] for c, d1, d2 in df.itertuples(index=False)
for d in pd.date_range(d1, d2, freq='MS')],
columns=['Category', 'Date']
)
Category Date
0 a 2017-01-01
1 a 2017-02-01
2 a 2017-03-01
3 a 2017-04-01
4 a 2017-05-01
5 a 2017-06-01
6 a 2017-07-01
7 a 2017-08-01
如果您有 3 个以上的列并且只需要
Category
和 Date
pd.DataFrame(
[[c, d] for c, d1, d2, *_ in df.itertuples(index=False)
for d in pd.date_range(d1, d2, freq='MS')],
columns=['Category', 'Date']
)
*_
解包元组的其余部分。否则,我们可以捕获整个元组并只获取我们需要的位。
pd.DataFrame(
[[t[0], d] for t in df.itertuples(index=False)
for d in pd.date_range(t[1], t[2], freq='MS')],
columns=['Category', 'Date']
)
关于Python:转置数据以在两个日期之间为每个月创建记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47171944/