在linregress python中重新排列标题

时间:2018-09-23 00:04:52

标签: python python-3.x pandas scipy

我正在Python中使用Linregress来获取坡度,截距等

输出是一个csv文件。但是,数据输出的列中没有标题。数据输出为:slope = 5.562,intercept = 223.5等

随信附上一张我在Jupyter笔记本中看到的图像(左图)与我需要的数据(右图)。 t正在重新排列数据,以使标头不会在水平方向看到,而在垂直方向上可见。

enter image description here

如果能在这方面获得帮助,那将是很棒的事情。

感谢阅读!

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

res = df.groupby('Test_event')[['x','y']].apply(linregress).apply(pd.Series)

res.columns = ['slope','intercept','rvalue','pvalue','stderror']

尽管链接的apply不够理想

示例:

>>> df
   Test_event  x   y
0           5  1   4
1           5  1   5
2           5  2   6
3           6  3   8
4           6  4  10
5           6  5  11

>>> res = df.groupby('Test_event')[['x','y']].apply(linregress).apply(pd.Series)
>>> res.columns = ['slope','intercept','rvalue','pvalue','stderror']
>>> res
            slope  intercept    rvalue    pvalue  stderror
Test_event                                                
5             1.5   3.000000  0.866025  0.333333  0.866025
6             1.5   3.666667  0.981981  0.121038  0.288675

或者,您可以执行此操作,但是我不确定它是否更有效:

res = (df.groupby('Test_event')
       .apply(lambda group: pd.Series(linregress(group['x'],group['y']))))

res.columns = ['slope','intercept','rvalue','pvalue','stderror']