¿Obtener la lista de la columna o fila del marco de datos de pandas?

Resuelto yoshiserry asked hace 10 años • 11 respuestas

Tengo un marco de datos dfimportado de un documento de Excel como este:

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

Quiero poder devolver el contenido de la columna 1 df['cluster']como una lista, para poder ejecutar un bucle for sobre ella y crear una hoja de cálculo de Excel para cada grupo.

¿También es posible devolver el contenido de una columna o fila completa a una lista? p.ej

list = [], list[column1] or list[df.ix(row1)]
yoshiserry avatar Mar 12 '14 10:03 yoshiserry
Aceptado

Las columnas de Pandas DataFrame son la serie Pandas cuando las extraes, a las que luego puedes recurrir x.tolist()para convertirlas en una lista de Python. Alternativamente, lo lanzas con list(x).

import pandas as pd

data_dict = {'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(data_dict)

print(f"DataFrame:\n{df}\n")
print(f"column types:\n{df.dtypes}")

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

col_one_arr = df['one'].to_numpy()

print(f"\ncol_one_list:\n{col_one_list}\ntype:{type(col_one_list)}")
print(f"\ncol_one_arr:\n{col_one_arr}\ntype:{type(col_one_arr)}")

Producción:

DataFrame:
   one  two
a  1.0    1
b  2.0    2
c  3.0    3
d  NaN    4

column types:
one    float64
two      int64
dtype: object

col_one_list:
[1.0, 2.0, 3.0, nan]
type:<class 'list'>

col_one_arr:
[ 1.  2.  3. nan]
type:<class 'numpy.ndarray'>
Ben avatar Mar 12 '2014 03:03 Ben

Esto devuelve una matriz numerosa:

arr = df["cluster"].to_numpy()

Esto devuelve una gran variedad de valores únicos :

unique_arr = df["cluster"].unique()

También puedes usar numpy para obtener los valores únicos, aunque existen diferencias entre los dos métodos:

arr = df["cluster"].to_numpy()
unique_arr = np.unique(arr)
Anirudh Bandi avatar Aug 02 '2017 10:08 Anirudh Bandi

Conversión de ejemplo:

Numpy Array -> Panda Data Frame -> Lista de una columna Panda

matriz numerosa

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

Convierta una matriz numpy en un marco de datos de Panda

dataPd = pd.DataFrame(data = data)
    
print(dataPd)
0   1   2
0  10  20  30
1  20  30  60
2  30  60  90

Convierta una columna de Panda en una lista

pdToList = list(dataPd['2'])

Hrvoje avatar Nov 03 '2018 11:11 Hrvoje