gpt4 book ai didi

python - 从两个日期列中删除月份

转载 作者:行者123 更新时间:2023-12-01 03:21:11 24 4
gpt4 key购买 nike

我有一个 pandas 数据框,其中包含契约(Contract)开始和结束日期以及数量。我如何剔除各个月份,以便对它们进行聚合和绘制图表。

ex 
Start Date End Date Demanded Customer
1/1/2017 3/31/2017 100 A
2/1/2017 3/31/2017 50 B

将月份去掉

Month       Demand    Customer
1/1/2017 100 A
2/1/2017 100 A
3/1/2017 100 A
2/1/2017 50 B
3/1/2017 50 B

最终结果是对此进行透视,然后绘制 x 轴为月份、y 轴为总需求的图表

最佳答案

您可以先转换带有日期的列to_datetime 。然后使用itertuplesdate_range频率 MS(月初)为 concat用于创建新的扩展DataFrame。最后join原始列需求数量客户:

df['Start_Date'] = pd.to_datetime(df['Start Date'])
df['End_Date'] = pd.to_datetime(df['End Date'])

df1 = pd.concat([pd.Series(r.Index,
pd.date_range(r.Start_Date, r.End_Date, freq='MS'))
for r in df.itertuples()])
.reset_index()
df1.columns = ['Month','idx']
print (df1)
Month idx
0 2017-01-01 0
1 2017-02-01 0
2 2017-03-01 0
3 2017-02-01 1
4 2017-03-01 1

df2 = df1.set_index('idx').join(df[['Quantity Demanded','Customer']]).reset_index(drop=True)
print (df2)
Month Quantity Demanded Customer
0 2017-01-01 100 A
1 2017-02-01 100 A
2 2017-03-01 100 A
3 2017-02-01 50 B
4 2017-03-01 50 B

关于python - 从两个日期列中删除月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41902835/

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