簡體   English   中英

Python 從 CSV 文件中提取數據

[英]Python Extract Data from CSV file

假設我們下面有一個樣本數據

在此處輸入圖像描述

我想使用 Python 和從第 5 行(即交易 ID、交易名稱、起始日期、到期日期)到第 8 行的額外數據。 此外,一旦我提取了數據,我想將文件保存為以下格式 ExtensionReport202205.csv 並且整個內容應該是動態的。 我使用跳過行和 iloc 來獲取行但它不是動態的? 所以請多多指教。

[![在此處輸入圖像描述][2]][2]

我的實際表:

錯誤信息圖片:[2]: https ://i.stack.imgur.com/e8XNx.jpg

這可能對你有用。 盡管如果您有其他要求,您可能需要進行調整。

閱讀 XLSX:

xls = r'D:\jchtempnew\SO\so_fix.xlsx'
df = pd.read_excel(xls)
print(df)

              Unnamed: 0 Unnamed: 1           Unnamed: 2           Unnamed: 3
0                    NaN        NaN                  NaN                  NaN
1                    NaN        NaN                  NaN                  NaN
2    Run Date:2022/05/31        NaN                  NaN                  NaN
3  2022/05/01-2022/05/31        NaN                  NaN                  NaN
4                Deal ID  Deal Name     Origination Date        Maturity Date
5                    PEP       D251  2019-05-01 00:00:00  2023-03-13 00:00:00
6                     KO       D351  2020-10-02 00:00:00  2025-04-15 00:00:00
7                     MM       D451  2021-11-10 00:00:00  2026-12-01 00:00:00

查找並格式化運行日期文件名 - 處理yyyy/mm/ddmm/dd/yyyy

if df['Unnamed: 0'].str.match('^Run Date:.*\d{4}/\d\d/\d\d').any():
    fdate = df['Unnamed: 0'].str.extract('^Run Date:(\d{4}/\d\d)/\d\d').dropna().iat[0,0].replace('/','')
    fn = f'ExtensionReport{fdate}.csv'
    
elif df['Unnamed: 0'].str.match('^Run Date:.*\d\d/\d\d/\d{4}').any():
    my = df['Unnamed: 0'].str.extract('^Run Date:.*(\d\d)/\d\d/(\d{4})').dropna()
    fn = f'ExtensionReport{my.iat[0,1]+my.iat[0,0]}.csv'

fn

'ExtensionReport202205.csv'

然后擺脫標題上方的所有內容:

df2 = df.dropna()

然后提取標題並從中設置新的列名:

df2.columns = df2.iloc[0].values
df2 = df2.iloc[1:,:]

只保留處理交易。 擺脫其他人 - 比如在隊列中:

if df2['Deal ID'].str.contains('Deal ID').any():
    df2 = df2.iloc[:df2['Deal ID'].str.contains('Deal ID').argmax()]
    
print(df2)

  Deal ID Deal Name     Origination Date        Maturity Date
5     PEP      D251  2019-05-01 00:00:00  2023-03-13 00:00:00
6      KO      D351  2020-10-02 00:00:00  2025-04-15 00:00:00
7      MM      D451  2021-11-10 00:00:00  2026-12-01 00:00:00

然后保存到您命名的 CSV:

df2.to_csv(fn, ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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