1
所以我想知道是否可以对多行数据框进行排序。例如,假设有一个有5行的数据框,我想随机选择几行,在这种情况下,我会说2,我将它指定为centroid1和centroid2,然后根据这些行对数据框进行排序。在这种情况下,小于质心1的行高于质心1,大于质心1但小于质心2的行位于它们之间,大于质心2的行位于质心2以下。根据多行将数据帧拆分为多个部分
def compareRows(arr1, arr2):
a1 = sum(arr1)
a2 = sum(arr2)
return a1 > a2
这个函数是我如何比较行。
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
sampled = df.sample(1)
d = df.drop(sampled.index)
gt = d.apply(compareRows, 1, arr2=sampled.squeeze())
df = pd.concat([d[~gt], sampled, d[gt]])
我明白如何做到这一行。上面的代码读入数据集,然后将其放入数据框中。之后,它从框架中取一个样本,将其删除,然后应用compareRows函数来比较其他行是大于还是小于它并将它们附加到正确的位置。我的问题是是否可以概括这个过程,以便它可以用1,2,3 ... n行完成。因此,如果我选择了3个中心,它与我上面的2个中心的例子类似,但是会有另一个中心来分区数据。
任何意见表示赞赏。请让我知道是否需要任何关于这个问题的进一步的信息或解释。
感谢您阅读
只是遍历最后三行代码,每次应用不同的样本(质心) –
但是,难道仅仅根据当前质心对数据帧进行排序?我需要它是这样安排的,即如果有两个质心,那么低于第一个质心,那么高于第一个但低于第二个质心的是中间,而大于第二个是在第二个。如果我这样做了,它只会用一个质心对它进行排序。 –
*然后根据这些行对数据帧进行排序* ...如何按行排序df? 78列将使用什么值?通常按列排序。 – Parfait