import pandas as pd
import pandas.util.testing as tm
df = tm.makeTimeDataFrame(freq='30T').abs()
df.head()
A | B | C | D | |
---|---|---|---|---|
2000-01-01 00:00:00 | 0.693904 | 0.151308 | 0.942564 | 0.296334 |
2000-01-01 00:30:00 | 0.076148 | 1.016240 | 0.107053 | 1.039110 |
2000-01-01 01:00:00 | 0.298299 | 1.639225 | 0.319456 | 1.470129 |
2000-01-01 01:30:00 | 0.471445 | 0.939733 | 1.396692 | 0.603180 |
2000-01-01 02:00:00 | 0.924674 | 1.044222 | 0.364495 | 1.786966 |
# add some levels to columns
df = df.T.reset_index()
levels = []
for ln in range(3):
cln = f'col_level_name_{ln}'
df[cln] = f'col_label{ln}'
levels.append(cln)
df = df.set_index(['index'] + levels).T
df.head()
index | A | B | C | D |
---|---|---|---|---|
col_level_name_0 | col_label0 | col_label0 | col_label0 | col_label0 |
col_level_name_1 | col_label1 | col_label1 | col_label1 | col_label1 |
col_level_name_2 | col_label2 | col_label2 | col_label2 | col_label2 |
2000-01-01 00:00:00 | 0.693904 | 0.151308 | 0.942564 | 0.296334 |
2000-01-01 00:30:00 | 0.076148 | 1.016240 | 0.107053 | 1.039110 |
2000-01-01 01:00:00 | 0.298299 | 1.639225 | 0.319456 | 1.470129 |
2000-01-01 01:30:00 | 0.471445 | 0.939733 | 1.396692 | 0.603180 |
2000-01-01 02:00:00 | 0.924674 | 1.044222 | 0.364495 | 1.786966 |
df.index = pd.to_datetime(df.index)
df.resample('120T').mean()
index | A | B | C | D |
---|---|---|---|---|
col_level_name_0 | col_label0 | col_label0 | col_label0 | col_label0 |
col_level_name_1 | col_label1 | col_label1 | col_label1 | col_label1 |
col_level_name_2 | col_label2 | col_label2 | col_label2 | col_label2 |
2000-01-01 00:00:00 | 0.384949 | 0.936627 | 0.691441 | 0.852188 |
2000-01-01 02:00:00 | 0.664418 | 0.832360 | 1.253272 | 0.967110 |
2000-01-01 04:00:00 | 0.596759 | 1.324063 | 1.055039 | 0.324780 |
2000-01-01 06:00:00 | 1.035268 | 1.348973 | 0.720557 | 0.175600 |
2000-01-01 08:00:00 | 0.393788 | 1.401532 | 0.769084 | 0.158135 |
2000-01-01 10:00:00 | 0.453719 | 1.251386 | 0.637271 | 1.006637 |
2000-01-01 12:00:00 | 0.799525 | 0.719272 | 0.383411 | 1.245929 |
2000-01-01 14:00:00 | 0.327327 | 1.972067 | 0.821924 | 1.644501 |
df.resample('120T').nunique()
A | B | C | D | |
---|---|---|---|---|
col_label0 | col_label0 | col_label0 | col_label0 | |
col_label1 | col_label1 | col_label1 | col_label1 | |
col_label2 | col_label2 | col_label2 | col_label2 | |
2000-01-01 00:00:00 | 4 | 4 | 4 | 4 |
2000-01-01 02:00:00 | 4 | 4 | 4 | 4 |
2000-01-01 04:00:00 | 4 | 4 | 4 | 4 |
2000-01-01 06:00:00 | 4 | 4 | 4 | 4 |
2000-01-01 08:00:00 | 4 | 4 | 4 | 4 |
2000-01-01 10:00:00 | 4 | 4 | 4 | 4 |
2000-01-01 12:00:00 | 4 | 4 | 4 | 4 |
2000-01-01 14:00:00 | 2 | 2 | 2 | 2 |
nunique
drops the level names...¶