python - 我可以获取数据框三列的斜率并使用 python 中的值创建一个新列吗?
问题描述
有谁知道如何计算每行固定 x 轴的三列(y 轴)的斜率?例如,这是我的数据框:
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、3 x 轴,应该考虑每一行数据。
解决方案
试试这个,你可以np.polyfit()
用来找到斜率(通过将多项式的次数定义为 1),然后计算d
并将其放入字典中,最后将其转换为pandas DataFrame
:
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 值。
输出:
a b c d
0 1 3 7 3.0
1 2 4 8 3.0
2 3 5 9 3.0
推荐阅读
- amazon-web-services - Invalid UpdateExpression:两个文档路径相互重叠;必须删除或重写这些路径之一
- flutter - 每个用户每天显示一次消息
- laravel - 根据 Laravel 中的当前会话语言显示类别名称
- google-chrome-extension - 如何使用 Sentry 在 Chrome 扩展程序中记录内容脚本错误?
- powershell - Powershell脚本任务输出的AzureDevOps Pipeline变量赋值
- networking - 赛普拉斯无法访问 localhost socks5 代理
- apostrophe-cms - Apostrophe-cms 将一个碎片区域克隆到另一个非碎片区域
- angular - ForkJoin - ForLoop - 在每次订阅后处理一些逻辑,在所有可观察对象解决后处理一些逻辑
- java - 无法启用代码覆盖率:TypeError: Cannot read property 'plugins' of null
- css - Bootstrap V5 SassError:未定义的混合:同时从 @import 向上移动到 @use 模块系统