根据两列计算斜率 "coordinates"

Calculate the slope based on two columns "coordinates"

我有 pandas 看起来与此类似的数据框(日期是索引):

>>>            J01B_X   J01B_y   J02C_x   J02C_y...
date
2019-06-23     0.45    1.12       4.56    1.1
2019-06-24     0.22    1.18       5.5     0.8
2019-06-25     0.35    1.10       6.1     8.3
...

我想根据列中的 X 和 Y 值计算斜率:
(0.45 1.12, 0.22 1,18, 0.35 1.10) -> 基于 J01B_X 和 J01B_y
的观察 J01B 斜率 (4.51 1.1 , 5.5 0.8 , 6.1 8.3) -> 基于 J02C_X 和 J02C_y

的观察 J02C 的计算斜率

问题是我有 58 列这样每次基于两列计算它们的斜率。

最后我想要一行,而不是同一个原始 table,根据两列计算斜率,像这样(这是假数字):

>>>            J01B   J02C    ....   
               0.13    0.05       

有什么办法可以做到这一点吗?

该示例创建了一个 pandas 系列,它基本上是一个单维 pandas 对象,如一行。如果你愿意,你可以从中创建一个数据框

import pandas as pd
from scipy import stats

slopeB = stats.linregress(df['J01B_X'], df['J01B_y'] )
slopeB = slopeB[0]

slopeC = stats.linregress(df['J02C_x'], df['J02C_y'] )
slopeC = slopeC[0]

#Create Pandas series with slope data
slopes = pd.Series([slopeB, slopeC], index = ['J01B', 'J02C'], name="Slope")
slopedf = pd.DataFrame(slopes).T

斜坡看起来像这样:

J01B   -0.278195
J02C    4.233791
Name: Slope, dtype: float64

slopedf 看起来像这样,是一个只有一行的 DataFrame:

           J01B      J02C
Slope -0.278195  4.233791

slopes 和 slopedf 都可以以相同的方式查询,但是系列将 return 条目的数值,而 slopedf 将 return 具有数据的单个元素系列。尽管该系列在打印时显示为一列,但我认为这就是您想要的。

#output of slopes['J01B']
-0.2781954887218037

#output of slopedf['J01B']
Slope   -0.278195
Name: J01B, dtype: float64