Применение панд к нескольким фреймам данных в списке - PullRequest
0 голосов
/ 28 мая 2018

Применение функции к списку информационных фреймов, получение ошибки «строковые индексы должны быть целыми числами, а не str»

Функция отлично работает при отдельном применении к каждому фрейму данных.Однако возвращает ошибку при применении к списку фреймов данных.

Мои данные выглядят следующим образом:

    data
     date center dt Cust Type
     2017-09-20 AA I
     2017-09-21 BB E
     2017-09-25 BB I
     2017-09-29 AA I

Применяемая функция:

def calc2(data):
    def naming(x_array):
        ww = ' '.join(str(n) for n in x_array)
        return(ww)
    dc = data['center'].unique()
    dt = data['dt'].unique()
    ct = data['Cust Type'].unique()
    key = [dc,dt,ct]
    key = map(naming,key)
    dc, dt, ct = key[0], key[1], key[2]
    date = data['date']
    print(dc,dt,ct,date)

   dfs = ['df1','df2','df3']
   map(calc2,dfs)

Ошибка:

     ----> 6     dc = data['center'].unique()
           7     dt = data['dt'].unique()
           8     ct = data['Cust Type'].unique()

    TypeError: string indices must be integers, not str

Хотя отлично работает с отдельным набором данных:

    calc2(df1) -- works

Что я делаю не так?

1 Ответ

0 голосов
/ 28 мая 2018

Ваш list of dataframes не является на самом деле списком фреймов данных.Фактически это список строк:

dfs = ['df1','df2','df3']

print(type(dfs[0])) # <class 'str'>

Убедитесь, что список фреймов данных назначен на dfs.Кроме того, я рекомендую вам возвращать значения вашей функции, а не просто использовать print.

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