首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我能不能得到一个dataframe的三列的斜率,然后用python中的值创建一个新列?

我能不能得到一个dataframe的三列的斜率,然后用python中的值创建一个新列?
EN

Stack Overflow用户
提问于 2021-05-27 16:07:01
回答 1查看 227关注 0票数 0

有谁知道如何计算三列(y轴)的斜率,每一行都有一个固定的x轴?例如,这是我的数据文件:

代码语言:javascript
运行
复制
data = {'a':  [1, 2, 3],
        'b': [3, 4, 5],
        'c': [7, 8, 9]}
df = pd.DataFrame(data, columns=['a', 'b', 'c'])

我需要的是创建第四列'd‘,它的斜率为1,3,7,考虑x轴是,例如,1,2,3,这1,2,3x轴,应该考虑每一行数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-27 17:01:04

尝试这样做,您可以使用np.polyfit()查找斜率(通过将多项式的度定义为1),然后计算d并将其放入字典中,最后将其转换为pandas DataFrame

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd

def compute_slope(arr):
    return round(np.polyfit([1, 2, 3], arr, 1)[0], 2)

data = {'a':  [1, 2, 3],
        'b': [3, 4, 5],
        'c': [7, 8, 9]}

data['d'] = [compute_slope(list(arr)) for arr in zip(data['a'], data['b'], data['c'])]
df = pd.DataFrame(data, columns=['a', 'b', 'c', 'd'])

[1,2,3]函数中的变量compute_slope是硬编码的,因为您提到希望有这样的x值。

输出:

代码语言:javascript
运行
复制
   a  b  c    d
0  1  3  7  3.0
1  2  4  8  3.0
2  3  5  9  3.0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67725975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档