【问题标题】:perform integration on columns of Pandas DataFrame对 Pandas DataFrame 的列进行集成
【发布时间】:2019-10-29 21:48:18
【问题描述】:

我想对 pandas 数据框的列进行整合。第一列是年龄(时间 - dt),其余列是时间积分。

我尝试使用 scipy 集成函数使用“应用”/“lambda”方法。但做不到。

import pandas as pd
from scipy import integrate

sfr = 
      Age_Gyr          3254          3269          3291
0    0.500000  5.182340e-08  2.642610e-07  2.783430e-09
1    0.560322  4.084170e-08  1.515610e-07  2.627680e-09
2    0.627922  2.986970e-08  2.819660e-08  2.410660e-09
3    0.703678  2.386120e-08  2.097600e-09  2.555090e-09
4    0.788572  1.793270e-08  5.751970e-11  5.490520e-09
5    0.883709  1.373250e-08  1.517070e-10  6.231230e-09
6    0.990324  1.028010e-10  5.139110e-09  7.419210e-09
7    1.109800  7.512700e-10  4.182470e-08  1.440080e-08
8    1.243690  1.719770e-09  2.239910e-10  4.866400e-08
9    1.393740  2.806130e-08  5.869810e-10  6.121040e-08
10   1.561880  3.359250e-08  1.530720e-08  1.116400e-07
11   1.750320  8.492680e-08  3.197630e-09  1.711650e-07
12   1.961480  1.090190e-07  2.578610e-09  2.090300e-07
13   2.198130  1.490990e-07  1.561680e-10  3.531300e-07
14   2.463320  2.050680e-07  6.861820e-10  3.742560e-07
15   2.760500  2.683970e-07  5.512860e-09  4.297430e-07
16   3.093540  3.093700e-07  1.798130e-08  3.771080e-07
17   3.466760  4.114820e-07  1.491870e-08  4.958250e-07
18   3.885010  4.540180e-07  1.275250e-08  5.664370e-07
19   4.353710  6.332550e-07  9.337140e-08  5.912740e-07
20   4.878970  6.151890e-07  9.788760e-08  5.900450e-07
21   5.467590  7.640760e-07  2.338090e-07  6.881540e-07
22   6.127220  7.573870e-07  3.309460e-07  8.128530e-07
23   6.866440  1.203460e-06  2.738100e-07  1.532900e-06
24   7.694840  1.613990e-06  2.767600e-07  8.485710e-07
25   8.623180  2.058680e-06  4.189610e-07  9.596390e-07
26   9.663520  2.620590e-06  9.887390e-07  2.471610e-06
27  10.829400  3.309770e-06  1.226540e-06  2.801140e-06
28  12.135900  3.977210e-06  5.305930e-06  3.492020e-06
29  13.600000  5.327290e-06  1.012560e-05  4.556700e-06

integral = np.array([])
for col in sfr.columns[1:]:
    temp = sfr[sfr.columns[1:]].apply(lambda x: integrate.trapz(x[col],x['Age_Gyr']))
    integral = np.append(integral,temp)

print(integral)

KeyError: ('3254', '发生在索引 Age_Gyr')

【问题讨论】:

    标签: python-3.x pandas scipy


    【解决方案1】:

    使用DataFrame.iloc 选择所有没有最后一个的列和DataFrame.apply

    s = sfr.iloc[:, 1:].apply(lambda x: integrate.trapz(x,sfr['Age_Gyr']))
    print (s)
    3254    0.000023
    3269    0.000019
    3291    0.000020
    dtype: float64
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-19
      • 2021-04-20
      • 2017-08-26
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      相关资源
      最近更新 更多