我的非数字列在重新采样时被删除

Imr*_*ron 3 python pandas

我的 2 个非数字列标签和 FID 在重新采样时被删除,如何保留这些列?

T               CP      LC      DP     VB   WP      LABEL   FID
10/26/201711:00 251.05  40.9    3157.9  0   256.27  F30d    MN-0001-2017-1
10/26/201711:01 250.88  38.8    3159.3  0   257.32  F30d    MN-0001-2017-1
10/26/201711:02 250.85  38.2    3157.2  0   256.81  F30d    MN-0001-2017-1
10/26/201711:03 250.72  31.7    3159.7  0   255.74  F30d    MN-0001-2017-1
Run Code Online (Sandbox Code Playgroud)

使用groupby似乎只保留 1 列:

newseries1 = newseries.groupby('LABEL').resample('10min', level=1).mean()
newseries1.head(10)
Run Code Online (Sandbox Code Playgroud)

我想将 2 列 LABEL 和 FID 保留在我的数据框中

ALo*_*llz 5

resample就像groupby你可以指定一个字典来以不同的方式聚合数字和非数字列。

numeric = df.select_dtypes('number').columns
non_num = df.columns.difference(numeric)
d = {**{x: 'mean' for x in numeric}, **{x: 'first' for x in non_num}}

df.resample('10min').agg(d)
Run Code Online (Sandbox Code Playgroud)

样本数据

import pandas as pd
import numpy as np

df = pd.DataFrame(index=pd.date_range('2010-01-01', freq='3min', periods=20),
                  data={'col1': np.random.randint(1, 100, 20),
                        'col2': np.random.choice(list('abcde'), 20)})

numeric = df.select_dtypes('number').columns
non_num = df.columns.difference(numeric)
d = {**{x: 'mean' for x in numeric}, **{x: 'first' for x in non_num}}

df.resample('10min').agg(d)

#                          col1 col2
#2010-01-01 00:00:00  45.750000    e
#2010-01-01 00:10:00  61.000000    d
#2010-01-01 00:20:00  81.000000    b
#2010-01-01 00:30:00  28.750000    e
#2010-01-01 00:40:00  37.333333    a
#2010-01-01 00:50:00  20.333333    a
Run Code Online (Sandbox Code Playgroud)