Tengo una mesa grande como esta:

enter image description here

Mi objetivo es crear n tablas como esta:

enter image description here

Y el segundo cuando teno = 1 y ex = 2 ect ect

Con el nombre de esa tabla es igual a algo como = 1_0.5 y luego la segunda tabla 1_2 ect ect ...

¿Cuál es la forma más eficiente de hacerlo en Python?

1
Gogo78 2 oct. 2019 a las 16:26

1 respuesta

La mejor respuesta

Hola, creo que algo como esto funcionará para ti:

import pandas as pd
# I don't know where you have your data stored but you'll use some kind of pandas
# read method to load that data into a dataframe (which i'll call df)
df = pd.read_csv("./your-data.csv")
# get a list of each set of unique filters you'll use to create your smaller dataframes
filters = df[['teno', 'ex']].drop_duplicates().values.tolist()
# loop through filter sets
tables = dict()
for filter in filters:
    # pull out teno and ex filters. (teno will be in the first position, ex 
    # in the second)
    teno_filter = filter[0]
    ex_filter = filter[1]
    # filter df, append to list of smaller dfs
    filtered_df = df[(df['teno'] == teno_filter) & (df['ex'] == ex_filter)]
    tables[str(teno_filter) + "_" + str(ex_filter)] = filtered_df

# you can then access each filtered table by selecting from the `tables` dictionary
# for example, to access your first table:
first_table = tables["1_0.5"]

Creo que encontrará que almacenar todas las tablas en un solo diccionario funcionará mejor que crear un montón de tablas llamadas como 1_0.5, etc. De esta manera, todas se almacenan juntas, se puede acceder en un bucle, y usted todavía puede trabajar con ellos individualmente si lo desea

3
eva-vw 2 oct. 2019 a las 14:42