簡體   English   中英

更新了多個 CSV 文件中的 CSV 值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM