Python熊猫-不同年份的每周数据分组-重采样
我尝试使用“groupby”将3年的每日数据分组为每周数据 因此,我只想获得与2017年1月至2017年2月的四周相关的数据,然后是2017年2月,以此类推,直到2019年12月 到目前为止,我掌握的代码和原始数据示例如下所示:Python熊猫-不同年份的每周数据分组-重采样,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我尝试使用“groupby”将3年的每日数据分组为每周数据 因此,我只想获得与2017年1月至2017年2月的四周相关的数据,然后是2017年2月,以此类推,直到2019年12月 到目前为止,我掌握的代码和原始数据示例如下所示: prices = pd.read_csv("name_of_file.csv", header=1, index_col=0) prices.index = pd.to_datetime(prices.index, format='%d/%m/%Y')
prices = pd.read_csv("name_of_file.csv", header=1, index_col=0)
prices.index = pd.to_datetime(prices.index, format='%d/%m/%Y')
a=prices.groupby(prices.index.week).head(1)
c=prices.groupby(prices.index.week).tail(1)
a&c输出2017年和2019年的预期数据,但不是2018年的数据。
使用resample('w').mean()可以很好地工作,但我需要的是准确的数据,而不是它的平均值
A AAL AAP
Date
2017-01-03 45.265160 44.906567 169.691284
2017-01-04 45.859093 45.294525 171.083817
2017-01-05 45.313847 44.508907 170.964462
2017-01-06 46.725651 44.819275 168.726456
2017-01-09 46.871700 45.663097 168.626968
您对如何实现上述目标有何想法?
谢谢我不确定我是否正确理解了你的问题(缺少样本数据也没有帮助) 我认为您需要的是为每列使用不同的函数来聚合每周数据,即为
a
和b
列取每周的第一个值,为c
列取最后一个值
如果是,请尝试以下方法:
prices.groupby([pd.Grouper(freq=“W”))).agg({“a”:“first”、“b”:“first”、“c”:“last”})
(您也可以使用其他聚合方式,如{“a”:“sum”,“b”:“mean”,…}
)
UPD。
尝试
df.resample(“W”).first()
或df.resample(“7D”).first()
我不确定是否正确理解了您的问题(缺少样本数据也没有帮助)
我认为您需要的是为每列使用不同的函数来聚合每周数据,即为a
和b
列取每周的第一个值,为c
列取最后一个值
如果是,请尝试以下方法:
prices.groupby([pd.Grouper(freq=“W”))).agg({“a”:“first”、“b”:“first”、“c”:“last”})
(您也可以使用其他聚合方式,如{“a”:“sum”,“b”:“mean”,…}
)
UPD。
尝试
df.resample(“W”).first()
或df.resample(“7D”).first()
如果不是mean
那么您希望如何聚合每周数据<代码>总和?如果不是平均值
,那么您希望如何汇总每周数据<代码>总和?是的,很抱歉。我不想聚合数据,我只想从每日数据、每周数据组中进行选择。假设2017年1月的数据从1月1日到1月2日。。。直到1月31日,我想做的是从这31天中选择/拉取7-1月、14-1月、21-1月和28-1月的数据/价格,以及其他任何一个月的数据/价格。@jimfromtheoffice,在这种情况下,也许可以尝试df.resample(“W”).first()
df.resample(“7D”)。first()@jimfromtheoffice太好了,很高兴我能帮上忙!是的,很抱歉。我不想聚合数据,我只想从每日数据、每周数据组中进行选择。假设2017年1月的数据从1月1日到1月2日。。。直到1月31日,我想做的是从这31天中选择/拉取7-1月、14-1月、21-1月和28-1月的数据/价格,以及其他任何一个月的数据/价格。@jimfromtheoffice,在这种情况下,也许可以尝试df.resample(“W”).first()
df.resample(“7D”)。first()@jimfromtheoffice太好了,很高兴我能帮上忙!