【发布时间】:2018-09-25 23:54:56
【问题描述】:
在简化的数据框中:
import pandas as pd
df1 = pd.DataFrame({'350': [7.898167, 6.912074, 6.049002, 5.000357, 4.072320],
'351': [8.094912, 7.090584, 6.221289, 5.154516, 4.211746],
'352': [8.291657, 7.269095, 6.393576, 5.308674, 4.351173],
'353': [8.421007, 7.374317, 6.496641, 5.403691, 4.439815],
'354': [8.535562, 7.463452, 6.584512, 5.485725, 4.517310],
'355': [8.650118, 7.552586, 6.672383, 4.517310, 4.594806]},
index=[1, 2, 3, 4, 5])
int_range = df1.columns.astype(float)
a = 0.005
b = 0.837
我想求解一个方程,如下图所示:
I 等于数据框中的值。 x 是 int_range 值,因此在本例中为 350 到 355,dx=1。 a 和 b 是可选常量
我需要为每个每一行
获取一个数据框作为输出现在我做这样的事情,但我不确定它是否正确:
dict_INT = {}
for index, row in df1.iterrows():
func = df1.loc[index]*df1.loc[index].index.astype('float')
x = df1.loc[index].index.astype('float')
dict_INT[index] = integrate.trapz(func, x)
df_out = pd.DataFrame(dict_INT, index=['INT']).T
df_fin = df_out/(a*b)
这是我每行得到的最终总和:
1 3.505796e+06
2 3.068796e+06
3 2.700446e+06
4 2.199336e+06
5 1.840992e+06
【问题讨论】:
-
所以
I实际上不是一个常数,而是I(x)?。如果是这种情况,您可能想要scipy.integrate.cumtrapz -
是的,随x变化,当然,我会更新图片,不清楚。
-
想要的输出是什么样的?
-
我猜它应该导致一列积分值与之前的行数相同
-
@ALollz,在这种特殊情况下您将如何实现它=
标签: python pandas scipy integrate