我使用熊猫阅读和分析大型NHS处方数据集。它们分别保存为文件夹中的csv文件。 我想要将相同的几行代码分别应用于这些文件中的每一个 - 所以我想单独读取每个数据帧和大熊猫,然后提取相关数据并执行基本计算。遍历文件夹中的文件
这是到目前为止我的代码:
import pandas as pd
import glob
path = "/Volumes/TOSHIBA EXT/Datasets/2015"
all_files = glob.glob(path + "/*.CSV")
for f in all_files:
pd.read_csv(f,index_col=None, header=0, usecols=[2,4,5], names=['PRACTICE','BNF NAME', 'ITEMS'])
f=f[f['BNF NAME'].str.contains('Ampicillin' and 'Amoxicillin' and 'Co-Amoxiclav')]
print pd.to_numeric(f['ITEMS']).sum()
但是以下错误快到了..
TypeError: string indices must be integers, not str
我非常喜欢来定义选择包含字符串相关行的功能:“氨苄西林”,“阿莫西林”和“共阿莫西拉夫”;然后总计每个项目的总数(即总计名为'ITEMS'的列),然后我可以在for循环中遍历每个文件。
希望有关如何避免这个错误,并实现上述任何指针。
非常感谢! :)
始终显示完整的错误消息(Traceback)。还有其他有用的信息 - 即。哪一行出问题。 – furas
提示 - 使用'glob.iglob'而不是'glob.glob'。它返回一个生成器而不是'list',如果你迭代了很多文件,这是非常有用的。 – Billy
,并且不要在你的for循环中重新分配'f' - 这会让你很困惑。 – Billy