在数据帧列表中应用函数,获取错误"字符串索引必须是整数,而不是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
我做错了什么?
答案 0 :(得分:1)
您的onload
实际上 数据框列表。事实上,它是一个字符串列表:
list of dataframes
确保将数据框列表分配给dfs = ['df1','df2','df3']
print(type(dfs[0])) # <class 'str'>
。另外,我建议您使用函数返回值,而不是简单地使用dfs
。