Разрешающие списочные индексы должны быть целыми или кусочками, а не str в Python - PullRequest
0 голосов
/ 11 ноября 2018

list1 один - это диктат dfs. data1 одинокий дф.

Я хочу создать еще одну команду dfs (d), основанную на crosstab, которая будет классифицировать каждый столбец в каждом df в 'list1' по конкретным вопросам в 'data1'. Вот что я пробовал:

d={}
for df in list1:
    for col in list1[df]:
        d[df]= pd.DataFrame(pd.concat([pd.crosstab([df][col],data1['column1']),
                                        pd.crosstab([df][col],data1['column2'])],
                                        axis=1)) 

Я тогда получу 'TypeError: list indices must be integers or slices, not str'.

Я ценю, что раньше было много вопросов по этому поводу в stackoverflow, однако я изо всех сил пытался применить любое из решений моей проблемы.

1 Ответ

0 голосов
/ 11 ноября 2018

df перебирает ключи list1, когда вы делаете for df in list1. Так что это строка. Позже, когда вы передаете [df][col], он создает список из одного элемента, который является ключом, из которого вы пытаетесь получить строковый столбец. Я полагаю, вы имели в виду d[df] вместо

Для ясности я бы также предложил переименовать list1 и изменить цикл for в for df in <new_name>.keys()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...