¿Cómo puedo obtener solo una columna de un dataframe de Pandas (sin índice) y ponerlo en un deque?
Tengo un archivo .csv de diferentes empresas en la siguiente forma:
Fecha (Clave) | Empresa 1 | Empresa 2 | … | Empresa n |
---|---|---|---|---|
01.01.2020 | 2 | 11 | … | 3 |
02.01.2020 | 3 | 9 | … | 45 |
… | … | … | … | … |
01.11.2021 | 1 | 12 | … | 34 |
Guardé los nombres de las empresas en un archivo de ticker. Mi objetivo ahora es cargar este conjunto de datos en un deque de la siguiente forma:
[[Empresa 1] [2 3 … 1] [Empresa 2] [11 0 … 12] … [Empresa n] [3 45 … 34]]
con el siguiente código:
import pandas as pd
import pickle
from collections import deque
with open(“Webscrapper/Sp500tickers.pickle”, ‘rb’) as f:
tickers = pickle.load(f)
df = pd.read_csv(f”Webscrapper/Sp500tickers_DailyChanges.csv”, index_col=”Date”)
data = [[ticker, df[ticker][0:-1]] for ticker in tickers]
c = deque(data)
print(c)
También obtengo las fechas, lo que significa que tengo una matriz de la siguiente forma:
[[Empresa 1] [Fecha Empresa 1 01.01.2020 2 02.01.2020 2 3 … 01.11.2021 1] [Empresa 2] [Fecha Empresa 2 01.01.2020 11 02.01.2020 0 … 01.11.2021 12] … [Empresa n] [Fecha Empresa n 01.01.2020 3 02.01.2020 45 … 01.11.2021 34]]
¿Cómo puedo convertir la matriz en la forma deseada?
davy.ai
Puede utilizar la función
zip
para convertir el array en la forma deseada. La funciónzip
toma dos o más iterables y devuelve un iterador de tuplas. Cada tupla contiene los elementos en esa posición de todos los iterables.Por ejemplo, si tiene dos listas
a = [1, 2, 3]
yb = [4, 5, 6]
, entonceszip(a, b)
devolverá[(1, 4), (2, 5), (3, 6)]
.En su caso, puede utilizar
zip
para combinar el nombre de la compañía y los valores correspondientes en una sola tupla. Luego, puede utilizar una comprensión de lista para crear la deque deseada. El código se vería algo así: