尝试对三个数据列表进行排序,以使每个列表的排序顺序相同

时间:2016-06-14 13:50:24

标签: python

我有一个程序有三个列表关闭数据,名为proffit,macdHi和macdLow。 macdHi和macdLo是用于创建价格值的函数的参数

price[x]=f(macdHi]x],macdLow[x])

此列表非常大,我想对列表进行排序,因此在对价格进行排序后,macdHi和macdLow列表按顺序排序。 我可以使用pythons排序方法对价格表进行排序,但是macdLo和macdHi列表的顺序不再匹配价格表所以      price [x] = f(macdHi] x],macdLow [x])不再是真的

2 个答案:

答案 0 :(得分:0)

您可能会发现Pandas为此提供了更简单/更快/更清晰的解决方案。它内置了基于各种标准对数据进行排序的方法,并针对大型数据集进行了优化。

这里提供了一个很好的教程:http://chrisalbon.com/python/pandas_sorting_rows_dataframe.html

答案 1 :(得分:0)

你可以试试这个

AllLists = [macdHi,macdLow]

#sort by MacdHi
SortedByMacdHi = sorted(AllLists, key=lambda row: row[0])
for i in range(len(SortedByMacdHi)):
    price[i]=f(AllLists[0][i],AllLists[1][i])

#sort by MacdLow
SortedByMacdLow = sorted(AllLists, key=lambda row: row[1])
for i in range(len(SortedByMacdLow)):
    price[i]=f(AllLists[0][i],AllLists[1][i])

#sort by price
for i in range(len(macdHi)):
    price[i]=f(macdHi[i],macdLow[i])
CombinedList = [price,macdHi,macdLow]
SortedByMacdLow = sorted(CombinedList, key=lambda row: row[0])

我没有可以测试的数据。基本上前两种方法我结合macdHi和macdLow所以我可以对它们进行排序,同时保持它们的行对应。然后,我会使用该排序列表来创建价格。

我做的第三种方法与前两种方法差不多,但是颠倒了操作。我创建了价格,然后我合并了三个列表,这样我就可以在排序过程中保持它们的行对应。

希望这有帮助。