2015-08-14 85 views
0

我有一个pandas系列,我想将我的系列的所有行转换为单个列表。我有:将单个dataFrame列的行转换为python中的单个列表

list1=Series([89.34,88.52,104.19,186.84,198.15,208.88]). Then I have a function which i call: 
func(list1) 
def func(list1): 
    list1=list1.values.tolist() 
    print(list1) 

打印的结果是:

[[89.34], [88.52], [104.19], [186.84], [198.15], [208.88]] 

,但我想有: [89.34,88.52,104.19,186.84,198.15,208.88]

任何帮助。我正在使用python 2.7

+0

你不应该用'list'作为一个变量的名字,因为它在全球各地访问的数据结构。 – Ray

+0

我无法重现您的问题。你可以添加Python版本,pandas版本和你使用的是什么操作系统? – tmrlvi

+1

是的,我不明白该代码会给出这样的结果。如果你有一个* DataFrame *,然后调用'.values.tolist()',你会得到一个列表列表,但是如果你有一个Series,你应该简单地得到一个列表。 – DSM

回答

1

最简单的方法是访问Series对象的values属性,就像您在示例中所示。

> from pandas import Series 
> a_series = Series([89.34,88.52,104.19,186.84,198.15,208.88]) 
> print(a_series.values.tolist()) 
[89.34, 88.52, 104.19, 186.84, 198.15, 208.88] 

在同一时间访问列表中的多个元素:

> counter = 0 
> a_list = a_series.values.tolist() 
> while(counter < len(a_list)): 
.. if((counter+1) < len(a_list)): 
..  print(a_list[counter] == a_list[counter+1]) 
.. counter+=1 
False 
False 
False 
False 
False 
+0

感谢雷,这个问题是我想从第二个索引开始遍历该列表;那就是你的elem + 1并与elem比较 – user3841581

+0

然后你不需要给你一个列表。你可以用熊猫物体更有效地做到这一点。使用''''b_series = a_series.shift(-1)'''创建具有相同索引的系列,只有数据被移位。然后,你可以使用'''a_series - b_series'''来获得差异 – tmrlvi

+0

我添加了一种方法来比较元素与以前的元素。如果我错了,请让我知道。任何逻辑要求(比如elem + 1到elem)都应该在你的问题中,以免混淆。 – Ray

相关问题