Векторизация функции в списке кадров данных панд - PullRequest
2 голосов
/ 25 июня 2019

Я читаю файл Excel и сохраняю каждую вкладку в виде кадра данных pandas.

import pandas as pd
xla = pd.ExcelFile("file_name.xlsx")
kl=xla.sheet_names
hf_list=[]
for i in range(len(kl)):   
    hf_list.append(pd.read_excel(xla, i,index_col=0))

Я намереваюсь вычислить ранг каждого кадра данных в списке, поэтому написал следующий код.

def score_card(raw_list):    
    score_list=[]    
    for i in range(len(raw_list)):
        score_list.append(raw_list[i].rank(axis=1))        
    return score_list

score_list=score_card(hf_list)

Мне было интересно, есть ли способ векторизовать код и избегать цикла (ов) в функции Score_card (а также читать файл Excel).Заранее спасибо за ваше время.

1 Ответ

2 голосов
/ 25 июня 2019

Если используется параметр sheet_name = None в read_excel, получить порядок заказов для фреймов данных для каждого имени листа:

dfs = pd.read_excel("file_name.xlsx", sheet_name = None, index_col=0) 

Затем использовать понимание списка:

score_list = [v.rank(axis=1) for k, v in dfs.items()]

Или создайте большой DataFrame с concat:

df = pd.concat(dfs.values())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...