亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Pandas - 循環目錄 read_excel 使用工作簿月份將日期值添加到數據框

Pandas - 循環目錄 read_excel 使用工作簿月份將日期值添加到數據框

qq_笑_17 2023-11-09 21:40:19
我有一個包含 Excel 文件的目錄,我正在循環遍歷這些文件并將每個文件中的一張表讀取到 Pandas 數據框中。每個文件包含一個月的數據(示例名稱=“Savings January 2019.xlsx”)。Excel工作表中沒有日期列,因此我想在數據框中添加“日期”列,并按工作簿名稱中的月份和年份讀取每個文件(例如“2019年1月”)和添加“MM-DD-YYYY”(例如“01-01-2019”)作為讀入的每行的日期值。下面是我的工作循環,讀取 12 個沒有日期的 Excel 工作簿,僅生成所有 12 個月的總計。我需要日期,以便可以按月可視化數據。df_total = pd.DataFrame()for file in files:        # loop through Excel files (each file adds date value based on file name)    if file.endswith('.xlsx'):        excel_file = pd.ExcelFile(file)        sheets = excel_file.sheet_names        for sheet in sheets:               # loop through sheets inside an Excel file            df = excel_file.parse(sheet_name = "Group Savings")            df_total = df_total.append(df)當前 df:     State        Group      Value0   Illinois    000000130   470.931   Illinois    000000130   948.332   Illinois    000000784   3498.423   Illinois    000000784   16808.164   Illinois    000002077   7.00需要df:     State        Group        Date           Value0   Illinois    000000130   01-01-2019        470.931   Illinois    000000130   01-01-2019        948.332   Illinois    000000784   01-01-2019       3498.423   Illinois    000000784   02-01-2019       6808.164   Illinois    000002077   02-01-2019          7.00我做了一些研究,認為這就像創建列然后添加日期值,但無法弄清楚如何解析文件名來執行此操作,并且我顯然是這里的初學者。for sheet in sheets:               # loop through sheets inside an Excel file   df = excel_file.parse(sheet_name = "Group Savings")   df_total = df_total.append(df)   df_total['Date'] = #if excel_file contains 'January 2019', then df_total['Date'] == '01-01-2019
查看完整描述

2 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

您的概念是正確的,您的代碼也即將完成。您現在需要添加的只是日期解析。


您可以使用Python的strptime()來解析文件名中的日期。


https://docs.python.org/3/library/datetime.html


例如,如果您的文件名類似于“Savings January 2019.xlsx”,那么您可以按如下方式解析它。請注意,這不是解析字符串的唯一方法,還有其他幾種可以使用此方法的變體。


from datetime import datetime

string = 'Savings January 2019.xlsx'

month_str = string.split(' ')[1]

year_str = string.split(' ')[2].split('.')[0]

date_object = datetime.strptime(month_str + year_str, "%B%Y")

以下是 python 日期字符串格式的一個很好的概述:https://strftime.org/


獲得日期對象后,您只需將其添加到數據框中即可。


df['Date'] = date_object


查看完整回答
反對 回復 2023-11-09
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

這是最終的代碼。請注意,文件名實際上更長,并且我遺漏了一些公司信息,因此 .split 中的更改


from datetime import datetime


#create empty dataframe

df_total = pd.DataFrame()


# loop through Excel files

for file in files:                         

    if file.endswith('.xlsx'):

        excel_file = pd.ExcelFile(file)


        # parse excel filename to take month and year and save as date object for Date column

        month_str = file.split(' ')[4]      

        year_str = file.split(' ')[5].split('.')[0]

        date_object = datetime.strptime(month_str + year_str, "%B%Y")   

        

        # loop excel sheets and add "Date" column, populating with date from parsed filename

        sheets = excel_file.sheet_names

        for sheet in sheets:          # loop through sheets inside an Excel file         

            df = excel_file.parse(sheet_name = "Group Savings")

            df_total = df_total.append(df)

            df_total['Date'] = date_object


查看完整回答
反對 回復 2023-11-09
  • 2 回答
  • 0 關注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號