python - tutorial - selecionar colunas pandas




obter lista da coluna de dados do pandas (4)

Eu tenho um documento do excel que se parece com isso ..

cluster load_date   budget  actual  fixed_price
A   1/1/2014    1000    4000    Y
A   2/1/2014    12000   10000   Y
A   3/1/2014    36000   2000    Y
B   4/1/2014    15000   10000   N
B   4/1/2014    12000   11500   N
B   4/1/2014    90000   11000   N
C   7/1/2014    22000   18000   N
C   8/1/2014    30000   28960   N
C   9/1/2014    53000   51200   N

Eu quero ser capaz de retornar o conteúdo da coluna 1 - cluster como uma lista, para que eu possa executar um loop for sobre ele e criar uma planilha do excel para cada cluster.

Também é possível retornar o conteúdo de uma linha inteira a uma lista? por exemplo

list = [], list[column1] or list[df.ix(row1)]

Exemplo de conversão:

Matriz Numpy -> Panda Data Frame -> Lista de uma coluna Panda

Matriz Numpy

data = np.array([[10,20,30], [20,30,60], [30,60,90]])

Converter matriz numpy no quadro Panda

data = np.array([[10,20,30], [20,30,60], [30,60,90]])
dataPd = pd.DataFrame(data = data)

print(dataPd)
    0   1   2
0  10  20  30
1  20  30  60
2  30  60  90

Converta um quadro Panda para listar

pdToList = list(dataPd['2'])

Iterar sobre a lista como prova

 for counter, value in enumerate(pdToList):
        print(counter, value)
    0 90
    1 60
    2 30

Colunas Pandas DataFrame são séries de pandas quando você puxa-los para fora, que você pode chamar x.tolist() para transformá-los em uma lista do Python. Alternativamente, você o lança com a list(x) .

import pandas as pd

d = {'one' : pd.Series([1., 2., 3.],     index=['a', 'b', 'c']),
    'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}

df = pd.DataFrame(d)

print("Starting with this dataframe\n", df)

print("The first column is a", type(df['one']), "\nconsisting of\n", df['one'])

dfToList = df['one'].tolist()

dfList = list(df['one'])

dfValues = df['one'].values

print("dfToList is", dfToList, "and it's a", type(dfToList))
print("dfList is  ", dfList,   "and it's a", type(dfList))
print("dfValues is", dfValues, "and it's a", type(dfValues))

As últimas linhas retornam:

dfToList is [1.0, 2.0, 3.0, nan] and it's a <class 'list'>
dfList is   [1.0, 2.0, 3.0, nan] and it's a <class 'list'>
dfValues is [ 1.  2.  3. nan] and it's a <class 'numpy.ndarray'>

Esta questão pode ser útil. E os documentários do Pandas são realmente bons quando você vê o estilo deles.

Então, no seu caso, você poderia:

my_list = df["cluster"].tolist()

e depois de lá ir.


Supondo que o nome do dataframe depois de ler a planilha do excel seja df , pegue uma lista vazia (por exemplo, dataList ), percorra o dataframe linha por linha e acrescente à sua lista vazia como-

dataList = [] #empty list
for index, row in df.iterrows(): 
    mylist = [row.cluster, row.load_date, row.budget, row.actual, row.fixed_price]
    dataList.append(mylist)

Ou,

dataList = [] #empty list
for row in df.itertuples(): 
    mylist = [row.cluster, row.load_date, row.budget, row.actual, row.fixed_price]
    dataList.append(mylist)

Não, se você imprimir o dataList , você obterá cada linhas como uma lista no dataList .


existe outro example.combine com alguns refs da web:

import pandas as pd
def readcolumn(filename,column):
    #select sheet name and selct column as index,index_col=0
    df = pd.read_excel(filename,sheetname =0)
    headername = list(df)
    print(headername)
    column_data =df[list(df)[column]].tolist()
    return  column_data




pandas