我有一个多索引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