我使用熊貓閱讀和分析大型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