我试图置换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)
我的问题是,是否有更快捷,更有效的方式来达到我的解决方案?到目前为止,情况尚未得到满足。