使用分层熊猫数据框架的数学



我有一个多索引DataFrame,如下所示:

pd.DataFrame({('Number', 1): {('A', 'Blue', 'One', 'Bar'): 1,
('A', 'Blue', 'Two', 'Foo'): 2},
('Number', 2): {('A', 'Blue', 'One', 'Bar'): 2,
('A', 'Blue', 'Two', 'Foo'): 4},
('Number', 3): {('A', 'Blue', 'One', 'Bar'): 3,
('A', 'Blue', 'Two', 'Foo'): 6},
('Slope', ''): {('A', 'Blue', 'One', 'Bar'): 1,
('A', 'Blue', 'Two', 'Foo'): 2}})

看起来像这样,但是缺少斜率柱:

Number  Slope
1   2   3   
A   Blue    One Bar 1   2   3   1
Two Foo 2   4   6   2

我不确定如何计算和填充斜率列。为了进行计算,我假设列名为x值,列中的值为y值。

Try withnp.polyfit:

# get the actual data, without `Slope` column
data = df.iloc[:, :-1]
df['Slope'] = np.polyfit(data.columns.get_level_values(1)
.to_numpy(dtype='int'), 
data.T.to_numpy(), 1)[0]

输出:

Number       Slope
1  2  3      
A Blue One Bar      1  2  3   1.0
Two Foo      2  4  6   2.0

最新更新