[英]Updated CSV Values across Multiple CSV Files
這是我下面的代碼,每當我運行我的程序時,我都會收到錯誤消息“屬性錯誤:'generator' object 沒有屬性'loc'”
我目前正在嘗試將所有 csv 文件中指定列中的指定值更改為指定列的不同指定值
我不確定為什么會這樣
# Get CSV files list from a folder
csv_files = glob.glob(dest_dir + "/*.csv")
# Read each CSV file into DataFrame
# This creates a list of dataframes
df = (pd.read_csv(file) for file in csv_files)
df.loc[df['Plan_Code'].str.contains('NABVCI'), 'Plan_Code'] = 'CLEAR_BV'
df.loc[df['Plan_Code'].str.contains('NAMVCI'), 'Plan_Code'] = 'CLEAR_MV'
df.loc[df['Plan_Code'].str.contains('NA_NRF'), 'Plan_Code'] = 'FA_GUAR'
df.to_csv(csv_files, index=False)
謝謝!
因為在創建 df 時使用圓括號而不是方括號,所以 df 成為生成器 object 而不是數據幀列表。 但是,即使您切換到方括號,您仍然會遇到問題:df 現在將是一個列表,但列表也沒有 loc 屬性,只有數據框——該列表的單個元素——有它。 所以 df.loc 仍然不起作用。
如果我正確理解你的意圖,你想要這樣的東西:
csv_files = glob.glob(dest_dir + "/*.csv")
for file in csv_files:
df = pd.read_csv(file) #now df is a dataframe, so df.loc makes sense
#do your df.loc manipulations, then save each df to its own file
df.to_csv(file, index=False)
你寫了這個:
df = (pd.read_csv(file) for file in csv_files)
您可能打算編寫一個列表推導式,而不是那個生成器表達式:
df = [pd.read_csv(file) for file in csv_files]
此外,您可能想要調用pd.concat() ,以便將多個.CSV 合並到單個 dataframe 中。
或者,您可能更喜歡建立從csv.DictReader中提取的字典列表,然后在該列表上調用pd.DataFrame()
。 Multiple.csv 文件可以為列表貢獻行。 每行一個字典,而不考慮該行出現在哪個文件中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.