Python 将索引值导出为列表

Python 将索引值导出为列表,python,Python,我有两个列表如下所示: speakers = ['S0\n', 'S0\n', 'S0\n', 'S1\n'] breaks = [0.86, 10.31, 22.43, 5.83] breaks = df['breaks'].tolist() 我的最终目标是根据时间值对它们进行排序,因此我得到以下两个列表: speakers = ['S0\n', 'S1\n', 'S0\n', 'S0\n'] breaks = [0.86, 5.83, 10.31, 22.43] 因此,我尝试这样做:

我有两个列表如下所示:

speakers = ['S0\n', 'S0\n', 'S0\n', 'S1\n']
breaks = [0.86, 10.31, 22.43, 5.83]
breaks = df['breaks'].tolist()
我的最终目标是根据时间值对它们进行排序,因此我得到以下两个列表:

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])
现在,这给了我一个数据框架和排名,我正在寻找。但是,我可以这样列出一个列表:

speakers = ['S0\n', 'S0\n', 'S0\n', 'S1\n']
breaks = [0.86, 10.31, 22.43, 5.83]
breaks = df['breaks'].tolist()
但是我找不到将索引值导出为列表的方法?我该怎么做呢?还是一个更好的方法来解决我的问题


什么

没有熊猫的尝试

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]
print speakers,breaks
['S0\n', 'S1\n', 'S0\n', 'S0\n'] [0.86, 5.83, 10.31, 22.43]
熊猫

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()
结果

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]
print speakers,breaks
['S0\n', 'S1\n', 'S0\n', 'S0\n'] [0.86, 5.83, 10.31, 22.43]

没有熊猫的尝试

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]
print speakers,breaks
['S0\n', 'S1\n', 'S0\n', 'S0\n'] [0.86, 5.83, 10.31, 22.43]
熊猫

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()
结果

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]
print speakers,breaks
['S0\n', 'S1\n', 'S0\n', 'S0\n'] [0.86, 5.83, 10.31, 22.43]

一个班轮,但不使用熊猫怎么样

zip(*sorted(zip(speakers, breaks), key=lambda x: x[1]))

我也会试着设计一个熊猫班轮,但不使用熊猫班轮怎么样

zip(*sorted(zip(speakers, breaks), key=lambda x: x[1]))

我也会试着拿出一只熊猫来

把它们压缩,分类,然后解压。看


编辑:哇,三个几乎相同,几乎同时出现的答案。这与其他两种方法的区别在于,它们先压缩
(speakers,breaks)
,然后按元组中的第二个元素排序,而这会压缩
(breaks,speakers)
,并使用默认排序,即按元组中的第一个元素(
breaks
)然后按第二个元素(
speakers
)排序如果有两个相同的
分隔符
值。

对它们进行压缩、排序,然后解压缩。看


编辑:哇,三个几乎相同,几乎同时出现的答案。这与其他两种方法的区别在于,它们先压缩
(speakers,breaks)
,然后按元组中的第二个元素排序,而这会压缩
(breaks,speakers)
,并使用默认排序,即按元组中的第一个元素(
breaks
)然后按第二个元素(
speakers
)排序如果有两个相同的
中断
值。

比我快7秒:(比我快7秒:(