2015-08-09 2 views
0

У меня есть следующий код дает мне почти то, что я хочу:нежелательный массив на выходе, панды

def stateCountAsList(filepath,state): 

    import pandas as pd 
    pd.set_option('display.width',200) 

    import numpy as np 

    dataFrame = pd.read_csv(filepath,header=0,sep='\t') 
    df = dataFrame.iloc[0:638,:] 

    dfState = df[df['State']== state] 
    yearList = range(1999,2012) 
    countsList =[] 

    for year in yearList: #for every year in the range 
     if year in dfState['Year'].tolist(): #if the year is in the list of years for the selected state 
      value = dfState[(dfState.Year == year)] 
      countsList.append(value.Count.values) 
     else: 
      countsList.append(np.nan.values) 
    print countsList 
    return countsList 

stateCountAsList('United States Cancer Statistics, 1999-2011 Incidencet.txt' ,'California') 

.

Вопрос заключается в том, что мой выход поставил должен быть список, но я получаю массив слово везде:

[array([ 5561.]), array([ 5588.]), array([ 6059.]), array([ 6043.]), array([ 5958.]), array([ 6566.]), array([ 7160.]), array([ 6780.]), array([ 7327.]), array([ 7585.]), array([ 7483.]), array([ 7635.]), array([ 7735.])] 

Как удалить массив в моем выходе?

ответ

1

Данные Dataframe Panda хранят свои данные в массивах numpy. Вот почему вы видите массив слов в выводе. Вы можете позвонить tolist(), если вы хотите преобразовать его в простые списки python вместо numpy массивов.

# untested 
for year in yearList: #for every year in the range 
    if year in dfState['Year'].tolist(): #if the year is in the list of years for the selected state 
     value = dfState[(dfState.Year == year)] 
     countsList.append(value.Count.values.tolist()) 
    else: 
     countsList.append(np.nan.values.tolist()) 
+0

круто, получил его. Благодаря! – madman

0

array представляет собой структуру данных, созданная библиотеку NumPy, которая является научной библиотекой для Python. Аналогичным образом можно получать элементы из массивов и списков.

С value.Count.values и np.nan.values возвращения массивов с одного элемента, вы можете вместо этого добавить элемент в countsList непосредственно:

countsList.append(value.Count.values[0]) 
... 
countsList.append(np.nan.values[0]) 

Источник: http://docs.scipy.org/doc/numpy/reference/arrays.html