1
pivot_df = SoilSensorDf.pivot(status_df, ['A', 'B', 'C'])
resample_methods = map({'A': 'sum',
'B': 'mean',
'C': 'min'}.get,
[x[0] for x in pivot_df.columns])
resample_method_tuple_list = zip(pivot_df.columns, resample_methods)
resample_dict = dict(resample_method_tuple_list)
pivot_df.resample('D', how=resample_dict)
をしかし、パンダ0.18.1と、ドキュメントは、私はこのようにそれを行う示唆します
pivot_df.resample('D').agg(resample_dict)
しかし、これは私に解決方法を理解できないような次のエラーを与えます。誰にでもアイデアはありますか?
File "/.../lib/python2.7/site-packages/pandas/tseries/resample.py", line 293, in aggregate
result, how = self._aggregate(arg, *args, **kwargs)
File "/.../lib/python2.7/site-packages/pandas/core/base.py", line 545, in _aggregate
result = _agg(arg, _agg_1dim)
File "/.../lib/python2.7/site-packages/pandas/core/base.py", line 496, in _agg
result[fname] = func(fname, agg_how)
File "/.../lib/python2.7/site-packages/pandas/core/base.py", line 475, in _agg_1dim
colg = self._gotitem(name, ndim=1, subset=subset)
File "/.../lib/python2.7/site-packages/pandas/tseries/resample.py", line 352, in _gotitem
return grouped[key]
File "/.../lib/python2.7/site-packages/pandas/core/base.py", line 330, in __getitem__
if len(self.obj.columns.intersection(key)) != len(key):
File "/.../lib/python2.7/site-packages/pandas/indexes/multi.py", line 2031, in intersection
other, result_names = self._convert_can_do_setop(other)
File "/.../lib/python2.7/site-packages/pandas/indexes/multi.py", line 2095, in _convert_can_do_setop
raise TypeError(msg)
TypeError: other must be a MultiIndex or a list of tuples
実証する例:これはパンダチームが作業されるバグであるよう
df = pd.DataFrame(np.random.randint(0, 100, (10, 3)), columns=list('ABC'),
index=pd.date_range('2016-01-01', freq='1400T', periods=10))
df['D'] = ['x', 'x', 'x', 'x', 'x', 'y', 'y', 'y', 'y', 'y']
df.index.name = "timestamp"
df_pivot = pd.pivot_table(df.reset_index(), values=['A', 'B'], index="timestamp",
columns=['C', 'D'])
resample_methods = map({'A': 'sum', 'B': 'mean'}.get, [x[0] for x in df_pivot.columns])
resample_method_tuple_list = zip(df_pivot.columns, resample_methods)
resample_dict = dict(resample_method_tuple_list)
df_pivot.resample('D').agg(resample_dict)