我有两个如下所示的列表:
speakers = ['S0\n', 'S0\n', 'S0\n', 'S1\n']
breaks = [0.86, 10.31, 22.43, 5.83]
我的最终目标是根据时间值对它们进行排序,所以我得到了这两个列表:
speakers = ['S0\n', 'S1\n', 'S0\n', 'S0\n']
breaks = [0.86, 5.83, 10.31, 22.43]
因此我尝试这样做:
#create a dataframe
import pandas as pd
df = pd.DataFrame(breaks, speakers)
df.columns = ['breaks']
df = df.sort(['breaks'], ascending=[1])
现在这为我提供了具有我正在寻找的排名的数据框。但是我可以像这样提取一个列表:
breaks = df['breaks'].tolist()
但是我找不到将索引值导出为列表的方法?关于如何做到这一点的任何想法?或者有更好的方法来解决我的问题?
什么
最佳答案
没有 Pandas 的尝试,
breaks,speakers = map(list,zip(*sorted(zip(breaks,speakers))))
执行,
speakers = ['S0\n', 'S0\n', 'S0\n', 'S1\n']
breaks = [0.86, 10.31, 22.43, 5.83]
breaks,speakers = map(list,zip(*sorted(zip(breaks,speakers))))
结果
In [4]: speakers
Out[4]: ['S0\n', 'S1\n', 'S0\n', 'S0\n']
In [5]: breaks
Out[5]: [0.86, 5.83, 10.31, 22.43]
使用 pandas
import pandas as pd
df = pd.DataFrame()
df['speakers'] = speakers
df['breaks'] = breaks
df = df.sort(['breaks'], ascending=[1])
speakers = df['speakers'].tolist()
breaks = df['breaks'].tolist()
结果
print speakers,breaks
['S0\n', 'S1\n', 'S0\n', 'S0\n'] [0.86, 5.83, 10.31, 22.43]
关于python - 将索引值导出为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43994780/