2015-08-14 127 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

相關問題