【发布时间】:2019-02-26 02:25:23
【问题描述】:
我有一个基于日期和时间(按时间分组)的多索引。数据如下所示:
r2 var_v2x _s
date time
2017-10-02 08:05:00 0.00000031 0.00008784 0.00353914
2017-10-03 08:05:00 0.00000008 0.00009055 0.00085233
2017-10-04 08:05:00 0.00000000 0.00018774 0.00000000
2017-10-05 08:05:00 0.00000031 0.00007609 0.00409934
还有另一个时间段:
r2 var_v2x _s
date time
2017-10-02 08:30:00 0.00000000 0.00008784 0.00000000
2017-10-03 08:30:00 0.00000008 0.00009055 0.00085375
2017-10-04 08:30:00 0.00000008 0.00018774 0.00041180
2017-10-05 08:30:00 0.00000000 0.00007609 0.00000000
2017-10-10 08:30:00 0.00000008 0.00006900 0.00112288
现在我想对列_s 应用滚动均值,并带有可自扩展的滚动窗口。
这意味着对于组内的第一次观察,滚动窗口为 1(所以只是值,第二次观察包括列 _s 的第一个和第二个值等等。
最后,我想让未分组的dataframe 喜欢:
r2 var_v2x _s s_rolling
date time
2017-10-02 08:05:00 0.00000031 0.00008784 0.00353914 0.00353914
2017-10-02 08:10:00 0.00000024 0.00008784 0.00249531 rolling(2)
2017-10-02 08:15:00 0.00000024 0.00008784 0.00249531 rolling(3)
2017-10-02 08:20:00 0.00000024 0.00008784 0.00249531 rolling(4)
到目前为止,我有这个:
`file_name = r'E:\Model\ModelSpecific\Index_shat.txt'
df = pd.read_csv(file_name, parse_dates=[0], index_col=None, sep=',')
list_date = sorted(set(df['Date']))
list_time = sorted(set(df['Time']))
iterables = [list_date, list_time]
indexed = pd.MultiIndex.from_product(iterables, names=['date', 'time'])
df = df.set_index(indexed)
df = df.dropna()
df['_s'] = df['r2']/df['var_v2x']
for date, new_df in enumerate(df.groupby(level=1)):
new_df = pd.DataFrame(new_df)
new_df['rolling_s'] = new_df.expanding().mean()
print(new_df)
但返回:ValueError: 传递的项目数错误 3,位置暗示 1。
我也试过enumerate(df.groupby(level=1)):
但返回:AttributeError: 'tuple' object has no attribute 'rolling'
【问题讨论】:
-
你想要
.expanding().mean()。但不确定代码到底是什么,因为您的输入不够完整,无法创建输出。 -
@ALollz 添加了我的完整代码。试过
.expanding().mean(),但它返回:AttributeError:'tuple'对象没有属性'rolling'。然后我尝试将元组转换为DataFrame,但这会返回:TypeError: DataFrame constructor called with incompatible data and dtype: setting an array element with a sequence -
你不需要枚举。只是
for date, new_df in df.groupby():,那么new_df就是你的DataFrame
标签: python pandas dataframe mean multi-index