使用循环

时间:2017-12-19 13:46:03

标签: python pandas numpy permutation

我试图置换pandas数据帧的值,直到满足条件。我的条件是在df.rows [1:6]中改变值,直到'sum'行中的值尽可能接近100。

我有以下数据框:

       row0        row1        row2     row3        row4        row5    row6
1      6.00    7.333333    8.666667   10.000   11.333333   12.666667   14.00
2      2.00    2.666667    3.333333    4.000    4.666667    5.333333    6.00
3      0.05    0.125000    0.200000    0.275    0.350000    0.425000    0.50
4      0.05    0.125000    0.200000    0.275    0.350000    0.425000    0.50
5      0.10    0.085000    0.070000    0.055    0.040000    0.025000    0.01
6     94.00   92.000000   90.000000   88.000   86.000000   84.000000   82.00
sum  102.20  102.335000  102.470000  102.605  102.740000  102.875000  103.01

我的循环如下:

def shuffle():
    df = matrix_gen()
    ind = df.index
    count =0
    while count <100000:
        sampler = np.random.permutation(df.shape[0])
        new_vals = df.take(sampler).values
        df = pd.DataFrame(new_vals, index=ind)
        v = df.loc['sum'].values
        if ((98<v) & (v<100)).any():
            break
        else:
            count = count + 1
            print(count)
    return df

m = shuffle()
print(m)

我的问题是,是否有更快捷,更有效的方式来达到我的解决方案?到目前为止,情况尚未得到满足。

0 个答案:

没有答案