【发布时间】:2018-11-20 16:52:27
【问题描述】:
这里有类似的问题:Pass Pandas DataFrame to Scipy.optimize.curve_fit
我现在有一个 shape=(100, 4) 的数据框,即四个从属变量 Y1 到 Y4。使用另一个独立数组 m = [1, 2, 3, 4]。我需要用 Ys 和 m 建立一个线性模型,生成一个预测的 Y 值。
如何为整个数据框执行此操作,而不是在 for 循环中对数据框的每一行执行此操作?
import numpy as np
import pandas as pd
from scipy.optimize import curve_fit
from scipy.stats import linregress
Y = np.random.randn(100, 4)
m = np.array([1, 2, 3, 4])
df = pd.DataFrame(Y, columns=['y1', 'y2', 'y3', 'y4'])
for index, row in df.iterrows():
slope, intercept, r_value, p_value, std_err = linregress(m, row.values)
print(slope, intercept)
【问题讨论】:
-
"但它对我不太有效" 究竟是什么?您能否详细说明(意外结果、错误……)?!
-
.values是从数据帧中获取 numpy 数组的常用方法。 -
@Cleb 嗨,我已更改代码以显示我尝试过的内容,对每一行使用 for 循环。