计算 pandas DataFrame 中每个组的 t 检验统计量

Max*_*nis 5 python pandas scikit-learn pandas-groupby

给定、和(每个值有多个记录)pandas DataFrame的列,我想创建一个新的,每行一行以及该组中的和值的相关 t 统计量。我想用 来做到这一点,而不是循环。groupxygroupDataFramegroupxygroupby

例子:

import pandas as pd
import numpy as np
from scipy import stats

N = 100  # Observations per group.
tt_df = pd.DataFrame({'group': np.append(['A'] * N, ['B'] * N),
                      'x': np.random.randn(2 * N)})
tt_df['y'] = tt_df['x'] + np.random.randn(2 * N)
stats.ttest_ind(tt_df['x'], tt_df['y'])[0]  # -0.32 global t statistic.
Run Code Online (Sandbox Code Playgroud)

Max*_*nis 5

tt_df.groupby('group').apply(lambda df: stats.ttest_ind(df['x'], df['y'])[0])
# group
# A   -0.292413
# B   -0.167816
# dtype: float64
Run Code Online (Sandbox Code Playgroud)