如何使用逐元素数据框操作?

how to use elementwise dataframe manipulation?

我有 2 个数据框,代表估计均值和标准误差。

import numpy as np
import scipy.stats as st

rows = (1, 2)
col1 = ["mean_x", "mean_y"]
col2 = ["std_x", "std_y"]

data1 = ([10, 20], [5, 10])
data2 = ([1, 2], [0.5, 1])

df1 = pd.DataFrame(data1, index = rows, columns = col1)
df2 = pd.DataFrame(data2, index = rows, columns = col2)

我想对这两个数据框进行元素操作,构建一个置信区间为 95% 的数据框

理想的格式是

运行一个循环好像很别扭,请问有没有更优雅,更高效的方法?

您可以使用 stats.norm.interval 并找到 95% 级别的置信区间,然后创建如下所示的 DataFrame:

>>> from scipy import stats
>>> twoDf = pd.concat([df1, df2], axis=1)

    mean_x  mean_y  std_x   std_y
1     10      20     1.0    2
2      5      10     0.5    1

>>> cols = [('mean_x','std_x', 'interval_x'),('mean_y','std_y', 'interval_y')]

>>> for col in cols:
...    twoDf[col[2]] = twoDf.apply(lambda row : \
...                                stats.norm.interval(0.95, loc=row[col[0]], scale=row[col[1]]), axis=1)

>>> twoDf

    mean_x   mean_y   std_x     std_y     interval_x                                 interval_y
1   10        20        1.0     2        (8.040036015459947, 11.959963984540053)    (16.080072030919894, 23.919927969080106)
2   5         10        0.5     1        (4.020018007729973, 5.979981992270027)     (8.040036015459947, 11.959963984540053)