【发布时间】:2018-03-09 17:01:41
【问题描述】:
所以我试图根据随机生成的行对数据框进行排序。数据框如下所示。我正在尝试做的是随机选择一行,我将在数据框中调用质心,然后使其小于数据的行在其上方,大于质心的行在它下面。但是我不知道该怎么做,我已经给出了下面的数据框和数据以及我用来比较行的函数。我通过将行中的值相加并将其与质心的总和进行比较来确定一行是小于还是大于。
有什么好办法吗?
感谢任何建议。
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
如果您需要更多信息,请告诉我
感谢您的阅读
【问题讨论】:
-
几个cmets: 1. 你的最终目标是什么?我在这里感觉到一个强烈的XY 问题。我的意思是,我可以用
df.iloc[df.sum(1).argsort()]解决这个问题,瞧,每一行都处于这样一个位置,即每一个比较高的行都低于该行,而较低的行高于该行。换句话说,它是排序的。 2.您是否尝试自己实现随机快速排序?如果是这样,我将不尝试通过每次操作数据框来做到这一点。 -
我正在尝试从数据框中随机选择一行,然后如果数据框中的其余行低于该行,则数据框中的其余行高于或低于该行我采摘。例如,如果我选择说第 5 行,那么应该对数据框进行排序,使得小于第 5 行的所有行都在其上方,并且所有大于第 5 行的行都在其下方。我决定的方式显示在我上面给出的函数中。
-
然后像
df = df.iloc[df.sum(1).argsort()]这样对数据框进行排序,并随机选择带有df.sample(1)的行 -
哦,好的,我明白了,谢谢,但是我如何将 df.sample(1) 与其他语句结合使用?原谅我,我对此很陌生。不过感谢您的帮助。
-
没问题,也不需要请求原谅。我们这些回答问题的人这样做是因为我们喜欢这样做。没有人强迫我帮助你(-:
标签: python pandas numpy dataframe cluster-analysis