¿Obtener la lista de la columna o fila del marco de datos de pandas?
Tengo un marco de datos df
importado 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)]
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'>
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)
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'])