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秒:(