如何解决如何从多列分组的数据集中获取一列值的滚动列表?
我无法从组中获取滚动窗口,然后将窗口值作为列表放入新列中。我想获得一个由counts
分组的前几天的type,bcode,and ts
窗口。我希望它成为具有计数的 list 自己的列(prev
)。我的示例(为简化起见)只有两天,我只询问前一天的时间,但实际上,该窗口将是前几天的时间。我的最终数据框不应分组。分组只是确定窗口值。
以下是数据:
data = {'type': ['ATF','ATF','TCK','ZSP','ZSP'],'bcode': ['264','264','396','957','957'],'ts': ['00:00:00.000','00:15:00.000','00:30:00.000','00:00:00.000','00:30:00.000'],'day': ['2019-09-30','2019-09-30','2019-10-01','2019-10-01'],'counts': ['0.0','37.0','15.0','26.0','0.0','42.0','14.0','30.0','6.0','35.0','13.0','24.0','26.0']
}
df = pd.DataFrame (data,columns = ['type','bcode','ts','day','counts'])
我想得到这个:
type bcode ts day count prev
ATF 264 00:00:00.000 2019-09-30 [0.0] [NaN]
ATF 264 00:15:00.000 2019-09-30 [37.0] [NaN]
ATF 264 00:30:00.000 2019-09-30 [15.0] [NaN
TCK 396 00:00:00.000 2019-09-30 [14.0] [NaN]
TCK 396 00:15:00.000 2019-09-30 [30.0] [NaN]
TCK 396 00:30:00.000 2019-09-30 [6.0] [NaN]
ZSP 957 00:00:00.000 2019-09-30 [0.0] [NaN]
ZSP 957 00:15:00.000 2019-09-30 [37.0] [NaN]
ZSP 957 00:30:00.000 2019-09-30 [15.0] [NaN]
ATF 264 00:00:00.000 2019-10-01 [26.0] [0.0]
ATF 264 00:15:00.000 2019-10-01 [0.0] [37.0]
ATF 264 00:30:00.000 2019-10-01 [42.0] [15.0]
TCK 396 00:00:00.000 2019-10-01 [35.0] [14.0]
TCK 396 00:15:00.000 2019-10-01 [13.0] [30.0]
TCK 396 00:30:00.000 2019-10-01 [24.0] [6.0]
ZSP 957 00:00:00.000 2019-10-01 [26.0] [0.0]
ZSP 957 00:15:00.000 2019-10-01 [15.0] [37.0]
ZSP 957 00:30:00.000 2019-10-01 [26.0] [15.0]
这是我尝试过的:
dfo = df.groupby(['type','ts'])['counts'].apply(lambda x: list(x))
dfo3 = df.groupby(['type','ts']).agg(lambda x: list(x))
每一个都将我的计数分组,并且每组都给了我所有计数。我没有成功向此代码添加滚动窗口。
我发现了一个website,它共享一种获取滚动窗口的方法。这是他们共享的示例:
from pandas import read_csv
from pandas import DataFrame
from pandas import concat
series = read_csv('daily-min-temperatures.csv',header=0,index_col=0)
temps = DataFrame(series.values)
width = 3
shifted = temps.shift(width - 1)
window = shifted.rolling(window=width)
dataframe = concat([window.min(),window.mean(),window.max(),temps],axis=1)
dataframe.columns = ['min','mean','max','t+1']
print(dataframe.head(5))
我实际上可以在工作中使用均值。但是,我无法通过此技术使用组,也无法从窗口中提取列表。
我真的很感谢在此方面的任何帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。