我有2016年1月至2020年7月的月度数据。从周一开始,我需要在几周内复制它
我尝试过使用重采样和ffill(),但由于不同城市和汽车的周期相同,我无法使用它
*df = df.resample('W-MON').ffill()*
我得到以下错误:
***ValueError: cannot reindex a non-unique index with a method or limit.***
原始df如下所示:
Car type num_month Sales City Car model
P 01-01-2016 100 X A
P 01-02-2016 200 X A
Q 01-01-2016 223 X B
Q 01-02-2016 123 X B
R 01-01-2016 456 X C
R 01-02-2016 678 X C
S 01-01-2016 345 X D
S 01-02-2016 123 X D
T 01-01-2016 876 X E
T 01-02-2016 567 X E
U 01-01-2016 780 X F
U 01-02-2016 543 X F
P 01-01-2016 766 Y A
P 01-02-2016 465 Y A
Q 01-01-2016 452 Y B
Q 01-02-2016 1234 Y B
R 01-01-2016 353 Y C
R 01-02-2016 566 Y C
S 01-01-2016 564 Y D
所需的文件如下所示:
Car type num_month Week Sales City Car model
P 01-01-2016 04-01-2016 100 X A
Q 01-01-2016 04-01-2016 223 X B
R 01-01-2016 04-01-2016 456 X C
U 01-01-2016 04-01-2016 780 X F
S 01-01-2016 04-01-2016 345 X D
T 01-01-2016 04-01-2016 876 X E
P 01-01-2016 11-01-2016 100 X A
Q 01-01-2016 11-01-2016 223 X B
R 01-01-2016 11-01-2016 456 X C
U 01-01-2016 11-01-2016 780 X F
S 01-01-2016 11-01-2016 345 X D
T 01-01-2016 11-01-2016 876 X E
P 01-01-2016 18-01-2016 100 X A
Q 01-01-2016 18-01-2016 223 X B
R 01-01-2016 18-01-2016 456 X C
U 01-01-2016 18-01-2016 780 X F
S 01-01-2016 18-01-2016 345 X D
T 01-01-2016 18-01-2016 876 X E
P 01-01-2016 25-01-2016 100 X A
Q 01-01-2016 25-01-2016 223 X B
R 01-01-2016 25-01-2016 456 X C
U 01-01-2016 25-01-2016 780 X F
S 01-01-2016 25-01-2016 345 X D
T 01-01-2016 25-01-2016 876 X E
P 01-02-2016 01-02-2016 200 X A
Q 01-02-2016 01-02-2016 123 X B
R 01-02-2016 01-02-2016 678 X C
U 01-02-2016 01-02-2016 564 X F
S 01-02-2016 01-02-2016 123 X D
T 01-02-2016 01-02-2016 567 X E
P 01-02-2016 08-02-2016 200 X A
Q 01-02-2016 08-02-2016 123 X B
R 01-02-2016 08-02-2016 678 X C
U 01-02-2016 08-02-2016 564 X F
S 01-02-2016 08-02-2016 123 X D
T 01-02-2016 08-02-2016 567 X E
P 01-02-2016 15-02-2016 200 X A
Q 01-02-2016 15-02-2016 123 X B
R 01-02-2016 15-02-2016 678 X C
U 01-02-2016 15-02-2016 564 X F
S 01-02-2016 15-02-2016 123 X D
T 01-02-2016 15-02-2016 567 X E
P 01-02-2016 22-02-2016 200 X A
Q 01-02-2016 22-02-2016 123 X B
R 01-02-2016 22-02-2016 678 X C
U 01-02-2016 22-02-2016 564 X F
S 01-02-2016 22-02-2016 564 X D
T 01-02-2016 22-02-2016 567 X E
P 01-01-2016 04-01-2016 766 Y A
Q 01-01-2016 04-01-2016 452 Y B
R 01-01-2016 04-01-2016 353 Y C
U 01-01-2016 04-01-2016 456 Y F
S 01-01-2016 04-01-2016 564 Y D
T 01-01-2016 04-01-2016 230 Y E
P 01-01-2016 11-01-2016 766 Y A
Q 01-01-2016 11-01-2016 452 Y B
R 01-01-2016 11-01-2016 353 Y C
U 01-01-2016 11-01-2016 456 Y F
除此之外,如果一周的开始日期为27或更大,以至于一周的大部分时间都在下一个月,那么该周的数据将仅包括在下一个月,即如果一周的日期为2016年6月29日,则相应的月份或“月数”将为2016年7月1日
我首先创建了一个透视表,这样所有的汽车模型就形成了一个单独的列,从而解决了这个问题。然后对每个城市使用一个for循环,我使用pd.df.resample.ffill()重新采样数据,最后使用melt()取消采样。然而,就上个月而言,我仍然只知道第一周的日期。但这就是我所能得到的
我建议使用
datetime
包。datetime.date.today().isocalendar()
返回今天的年份(2020)、一年中的一周(48)和一周中的一天(6)在下面,我为每月的每一天复制了一个值。这周你也可以这样做
相关问题 更多 >
编程相关推荐