Pandas将函数应用于列表

时间:2018-05-27 23:42:54

标签: python pandas dataframe

在数据帧列表中应用函数,获取错误"字符串索引必须是整数,而不是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 :(得分:1)

您的onload 实际上 数据框列表。事实上,它是一个字符串列表:

list of dataframes

确保将数据框列表分配给dfs = ['df1','df2','df3'] print(type(dfs[0])) # <class 'str'> 。另外,我建议您使用函数返回值,而不是简单地使用dfs