簡體   English   中英

如何從不同格式的列中提取日期?

[英]How can i extract dates from the column which are in different format?

在此處輸入圖像描述

我嘗試通過首先將列轉換為字符串來使用 datefinder 庫。 我嘗試從列中提取數字,但無法提取所有數字或所有日期。

有沒有可以自動提取日期的庫? 或者有哪些可能的方法來提取不同格式的日期?

這不是“漂亮”,但似乎可以使用您在屏幕剪輯中顯示的內容完成工作。

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Related Content", type text}}),
    #"Duplicated Column" = Table.DuplicateColumn(#"Changed Type", "Related Content", "Related Content - Copy"),
    #"Uppercased Text" = Table.TransformColumns(#"Duplicated Column",{{"Related Content - Copy", Text.Upper, type text}}),
    #"Replaced Value" = Table.ReplaceValue(#"Uppercased Text","DECEMBER","12",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","NOVEMBER","11",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1","OCTOBER","10",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value3" = Table.ReplaceValue(#"Replaced Value2","SEPTEMBER","9",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value4" = Table.ReplaceValue(#"Replaced Value3","AUGUST","08",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value5" = Table.ReplaceValue(#"Replaced Value4","JULY","07",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value6" = Table.ReplaceValue(#"Replaced Value5","JUNE","06",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value7" = Table.ReplaceValue(#"Replaced Value6","MAY","05",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value8" = Table.ReplaceValue(#"Replaced Value7","APRIL","04",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value9" = Table.ReplaceValue(#"Replaced Value8","MARCH","03",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value10" = Table.ReplaceValue(#"Replaced Value9","FEBRUARY","02",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value11" = Table.ReplaceValue(#"Replaced Value10","JANUARY","01",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value12" = Table.ReplaceValue(#"Replaced Value11","DEC","12",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value13" = Table.ReplaceValue(#"Replaced Value12","NOV","11",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value14" = Table.ReplaceValue(#"Replaced Value13","OCT","10",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value15" = Table.ReplaceValue(#"Replaced Value14","SEP","09",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value16" = Table.ReplaceValue(#"Replaced Value15","AUG","08",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value17" = Table.ReplaceValue(#"Replaced Value16","JUL","07",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value18" = Table.ReplaceValue(#"Replaced Value17","JUN","06",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value19" = Table.ReplaceValue(#"Replaced Value18","MAY","05",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value20" = Table.ReplaceValue(#"Replaced Value19","APR","04",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value21" = Table.ReplaceValue(#"Replaced Value20","MAR","03",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value22" = Table.ReplaceValue(#"Replaced Value21","FEB","02",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value23" = Table.ReplaceValue(#"Replaced Value22","JAN","01",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value24" = Table.ReplaceValue(#"Replaced Value23","03KET","MARKET",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Replaced Value25" = Table.ReplaceValue(#"Replaced Value24","V2","V-TWO",Replacer.ReplaceText,{"Related Content - Copy"}),
    #"Added Custom" = Table.AddColumn(#"Replaced Value25", "Custom", each Text.Select([#"Related Content - Copy"],{"0".."9"})),
    #"Added Custom2" = Table.AddColumn(#"Added Custom", "Custom.1", each if Text.Length([Custom])=5 then "0" & [Custom] else [Custom]),
    #"Added Custom1" = Table.AddColumn(#"Added Custom2", "Custom.2", each try Date.FromText([Custom.1]) otherwise #date(Number.From(Text.Middle([Custom.1],4,Text.Length([Custom.1])-4)), Number.From(Text.Middle([Custom.1],2,2)), Number.From(Text.Start([Custom.1],2)))),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom1",{"Related Content", "Custom.2"})
in
    #"Removed Other Columns" 

我為此使用了比我自己可能使用的更多的添加列步驟,但我認為它可能會幫助您了解我對數據所做的事情。

另外,我會將您的注意力引向 #"Replaced Value24" 和 #"Replaced Value25" 行,其中我替換了值以將 03KET 更改為 MARKET 並將 V2 更改為 V-TWO。 這些行的存在是因為:

  1. 早先將月份名稱從 MAR 更改為 03 影響了 MARKETING 這個詞——將其更改為 03keting——所以我需要將其改回;
  2. 我需要將 V2 中的 2 更改為字母,這樣當我嘗試提取日期數字時就不會有多余的數字來處理。

這是我得到的結果:

在此處輸入圖像描述

除了我在這里提供的內容之外,您還可以通過 python 查看正則表達式。 我從來沒有親自使用過它,但根據一些簡單的閱讀,它看起來可能對這樣的事情有用。 ...至少以某種方式。

暫無
暫無

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

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