我试图从Pandas MultiIndex DataFrame中的另一组列中减去一列,但是当我尝试这样做时,我只得到'nan'值。我提出了一个解决方案,但我不想在每次执行此操作时处理列的扁平处理。有人可以解释我对索引或其他什么不了解吗?
In [212]: A = df.loc[start:end, idx[:, 'MSHP Bedrooms', :, :, 'C']]
In [213]: B = df.loc[start:end, idx[:, :, 'Loft', :, 'C']]
In [214]: print(A)
unit Condensing Unit 1
head MSHP Bedrooms
room Bed 2 Bed 3 Bed 4
type Temperature Temperature Temperature
units C C C
2014-08-14 00:00:00 25.120001 23.389999 22.820000
2014-08-14 00:01:00 25.120001 23.379999 22.809999
2014-08-14 00:02:00 25.110001 23.370001 22.799999
2014-08-14 00:03:00 25.110001 23.360001 22.799999
2014-08-14 00:04:00 25.110001 23.370001 22.790001
2014-08-14 00:05:00 25.100000 23.360001 22.780001
In [215]: print(B)
unit Condensing Unit 1
head MSHP Loft
room Loft
type Temperature
units C
2014-08-14 00:00:00 26.190001
2014-08-14 00:01:00 26.190001
2014-08-14 00:02:00 26.180000
2014-08-14 00:03:00 26.190001
2014-08-14 00:04:00 26.190001
2014-08-14 00:05:00 26.180000
In [216]: C = A.sub(B, axis=0)
In [217]: print(C)
unit Condensing Unit 1
head MSHP Bedrooms MSHP Loft
room Bed 2 Bed 3 Bed 4 Loft
type Temperature Temperature Temperature Temperature
units C C C C
2014-08-14 00:00:00 NaN NaN NaN NaN
2014-08-14 00:01:00 NaN NaN NaN NaN
2014-08-14 00:02:00 NaN NaN NaN NaN
2014-08-14 00:03:00 NaN NaN NaN NaN
2014-08-14 00:04:00 NaN NaN NaN NaN
2014-08-14 00:05:00 NaN NaN NaN NaN
In [218]:
有趣的是,我做了以下工作。我将列重置为单个级别,只有在我用B加入B时它才会起作用。为什么会这样?
In [223]: A.columns = ['a','b','c']
In [224]: B.columns = ['d']
In [225]: A = A.join(B)
In [226]: C = A.sub(A['d'], axis=0)
In [227]: print(C)
a b c d
2014-08-14 00:00:00 -1.07 -2.800001 -3.370001 0
2014-08-14 00:01:00 -1.07 -2.810001 -3.380001 0
2014-08-14 00:02:00 -1.07 -2.809999 -3.380001 0
2014-08-14 00:03:00 -1.08 -2.830000 -3.390001 0
2014-08-14 00:04:00 -1.08 -2.820000 -3.400000 0
2014-08-14 00:05:00 -1.08 -2.820000 -3.400000 0
答案 0 :(得分:0)
在这里(Subtract a column from one pandas dataframe from another)我找到了解决方案。在减去的数据帧上执行df.squeeze()解决了它。
In [34]: C = A.sub(B.squeeze(), axis=0)
In [35]: print(C)
unit Condensing Unit 1
head MSHP Bedrooms
room Bed 2 Bed 3 Bed 4
type Temperature Temperature Temperature
units C C C
2014-08-14 00:00:00 -1.07 -2.800001 -3.370001
2014-08-14 00:01:00 -1.07 -2.810001 -3.380001
2014-08-14 00:02:00 -1.07 -2.809999 -3.380001
2014-08-14 00:03:00 -1.08 -2.830000 -3.390001
2014-08-14 00:04:00 -1.08 -2.820000 -3.400000
2014-08-14 00:05:00 -1.08 -2.820000 -3.400000