【发布时间】:2020-07-25 15:40:20
【问题描述】:
我想在我的数据框中获取两列合并值,并对 x_和 y_merged_psi_values 之间的每一行运行 t 检验。然后我想将 t 和 p 值附加到原始 df 的末尾。我的实际起始数据框要大得多,但这是布局示例:
In [3]: df=pd.DataFrame({'chromosome':[1,1,5],
...: 'strand':['-','-','+'],
...: 'elementloc':[4991, 8870, 2703],
...: 'x_Merged_Psi_values': ['0.21, 0.25,0.63,0.92','0.3, 0.
...:6, 0.78, 0.9', '0.39, 0.11, 0.09, 0.94'],
...: 'y_Merged_Psi_values':['0.11, 0.45, nan', '0.45, 0.22,
...: 0.89', '0.17, 0.12, 0.64']})
...: df
Out[3]:
chromosome strand elementloc x_Merged_Psi_values y_Merged_Psi_values
0 1 - 4991 0.21, 0.25,0.63,0.92 0.11, 0.45, nan
1 1 - 8870 0.3, 0.56, 0.78, 0.9 0.45, 0.22, 0.89
2 5 + 2703 0.39, 0.11, 0.09, 0.94 0.17, 0.12, 0.64
我知道如何为一行执行此操作,但需要帮助通过其余行自动执行此操作,尤其是因为我知道不建议遍历 pandas 数据帧行。
这是我为一排做的事情。我想对所有行执行此操作,并将生成的 t 和 p 值附加到 df。
X_psi=df["x_Merged_Psi_values"].to_list()
X_psi = [i.split(',') for i in X_psi]
X_psi = [ x for x in X_psi[0] if str(x) != 'nan']
X_psi = [float(i) for i in X_psi]
X_psi
Y_psi=df["y_Merged_Psi_values"].to_list()
Y_psi = [i.split(',') for i in Y_psi]
Y_psi = [ x for x in Y_psi[0] if str(x) != 'nan']
Y_psi = [float(i) for i in Y_psi]
Y_psi
t, p = ttest_ind(X_psi, Y_psi, equal_var=False)
print("Ttest_ind: t=%g p=%g" %(t,p))
【问题讨论】:
标签: python pandas dataframe scipy