我试图在分组后对多列进行求和,这些列具有不同的类型(整数、浮点数和时间差)。
在这个例子中,val1是一个整数列,val2是一个时间差列,v3是一个浮点数列。
In [1]: import pandas
In [2]: df = pandas.DataFrame({'key': [1, 1, 2, 2], 'val1': range(4), 'val2': [pandas.Timedelta(seconds=i) for i in range(4)], 'val3': [0.1 * i for i in range(4)]})
In [3]: df
Out[3]:
key val1 val2 val3
0 1 0 00:00:00 0.0
1 1 1 00:00:01 0.1
2 2 2 00:00:02 0.2
3 2 3 00:00:03 0.3
在这个例子中,val1是一个整数列,val2是一个时间差列,v3是一个浮点数列。
In [4]: df.groupby('key').sum()
Out[4]:
val1 val3
key
1 1 0.1
2 5 0.5
求和后,时间差列已经消失
In [5]: df.groupby('key')['val2'].sum()
Out[5]:
key
1 00:00:01
2 00:00:05
Name: val2, dtype: timedelta64[ns]
仅选择此列会显示它是可求和的。
In [6]: df.groupby('key')['val2', 'val3'].sum()
Out[6]:
val3
key
1 0.1
2 0.5
In [7]: df.groupby('key')['val2', 'val3'].sum()
Out[7]:
val3
key
1 0.1
2 0.5
我错过了什么?