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