我试图计算包含多个样本列的 Dataframe 列中的组合比率,每列有超过60k个值(行),我想计算每列中每两个值的比率组合。我从一个空的数据框开始,并在每次迭代中添加比率。
这是我目前得到的代码:
non_norm_data = data.values.T # turns df into numpy array, row = sample, column = feature\value
df_for_pairwise_ratio = pd.DataFrame()
numerators_df = pd.DataFrame()
for subject in range(np.shape(non_norm_data)[0]): # run on subjects number
subject_values = non_norm_data[subject, :]
for idx, (feature1, feature2) in enumerate(product(non_norm_data[subject, :], non_norm_data[subject, 1:])):
big_small_pair = max(feature1, feature2),\
min(feature1, feature2) # the first one is the bigger value
ratio = big_small_pair[0] / big_small_pair[1]
df_for_pairwise_ratio.loc[idx, f"Subject {subject}"] = ratio
numerators_df.loc[idx, f"Subject {subject}"] = big_small_pair[0]
字符串
这需要很长时间,我有内存错误,有什么方法可以使这更有效?这是我的一小部分数据:
0 1 2 3
40.96 50.19 30.46 33.17
118.71 55.55 43.56 142.89
22.67 102.33 8.48 14.56
型
谢谢你,谢谢
1条答案
按热度按时间dw1jzc5e1#
需要矢量化。首先构造一个高维对数组(避免自引用),排序,然后向量化划分。
字符串