[英]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/dd
和mm/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.