我有一个程序有三个列表关闭数据,名为proffit,macdHi和macdLow。 macdHi和macdLo是用于创建价格值的函数的参数
price[x]=f(macdHi]x],macdLow[x])
此列表非常大,我想对列表进行排序,因此在对价格进行排序后,macdHi和macdLow列表按顺序排序。 我可以使用pythons排序方法对价格表进行排序,但是macdLo和macdHi列表的顺序不再匹配价格表所以 price [x] = f(macdHi] x],macdLow [x])不再是真的
答案 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所以我可以对它们进行排序,同时保持它们的行对应。然后,我会使用该排序列表来创建价格。
我做的第三种方法与前两种方法差不多,但是颠倒了操作。我创建了价格,然后我合并了三个列表,这样我就可以在排序过程中保持它们的行对应。
希望这有帮助。