我正在尝试根据随机生成的行对数据框进行排序。数据框如下所示。我要做的是随机选择一行,称其为数据框中的中心点,然后使小于该行的行在它上方,大于中心点的行在它下方。但我不知道如何做到这一点,我已经提供了数据框和数据以及我用来比较行的函数。我通过将行中的值相加并将其与中心点的总和进行比较来决定行是小于还是大于。
如果您需要更多信息,请告诉我。感谢您的阅读。
有什么好的方法可以做到这一点吗?
任何建议都会受到赞赏。
def compareRows(arr1, arr2):
arr1 = sum(arr1)
arr2 = sum(arr2)
return arr1 > arr2
data = np.array(pd.read_csv('https://raw.githubusercontent.com/gsprint23/cpts215/master/progassignments/files/cancer.csv', header=None))
data = data.T
#print(data)
df = pd.DataFrame(data[1:], columns=data[0], dtype=float).T
如果您需要更多信息,请告诉我。感谢您的阅读。
df.iloc[df.sum(1).argsort()]
解决问题,然后每一行都处于一个位置,使得比它更高的每一行都在它下面,比它更低的每一行都在它上面。换句话说,它已经排序了。2.你是想自己实现随机快速排序吗?如果是这样,我不会尝试每次都通过操作数据框来完成它。 - piRSquareddf = df.iloc[df.sum(1).argsort()]
,并使用df.sample(1)
随机选择行。 - piRSquared