如何通过PowerQuery M语言或Python实现示例式CSV数据提取?
PowerQuery M语言与Python实现CSV数据提取方案
一、PowerQuery M语言实现
以下代码可直接在PowerQuery高级编辑器中使用,实现与示例提取功能一致的CSV数据读取:
let // 替换为你的CSV文件实际路径 FilePath = "C:\YourFolder\sales_data.csv", // 读取空格分隔的CSV文件,关闭引号解析适配无引号格式 Source = Csv.Document(File.Contents(FilePath), [Delimiter=" ", Encoding=1252, QuoteStyle=QuoteStyle.None]), // 将第一行设为表头 PromotedHeaders = Table.PromoteHeaders(Source, [PromoteAllScalars=true]), // 批量转换数据类型(按需调整) ChangedType = Table.TransformColumnTypes(PromotedHeaders, { {"ProductKey", Int64.Type}, {"OrderDateKey", Int64.Type}, {"DueDateKey", Int64.Type}, {"ShipDateKey", Int64.Type}, {"CustomerKey", Int64.Type}, {"PromotionKey", Int64.Type}, {"CurrencyKey", Int64.Type}, {"SalesTerritoryKey", Int64.Type}, {"SalesOrderNumber", type text}, {"SalesOrderLineNumber", Int64.Type}, {"RevisionNumber", Int64.Type}, {"OrderQuantity", Int64.Type}, {"UnitPrice", type number}, {"ExtendedAmount", type number}, {"UnitPriceDiscountPct", type number}, {"DiscountAmount", type number}, {"ProductStandardCost", type number}, {"TotalProductCost", type number}, {"SalesAmount", type number}, {"TaxAmt", type number}, {"Freight", type number}, {"CarrierTrackingNumber", type text}, {"CustomerPONumber", type text}, {"OrderDate", type date}, {"DueDate", type date}, {"ShipDate", type date} }) in ChangedType
关键说明:
- 替换
FilePath为你的CSV文件实际路径 Delimiter=" "适配示例中的空格分隔格式,若为制表符分隔可改为Delimiter="\t"TransformColumnTypes中的数据类型可根据实际数据调整
二、Python实现(基于Pandas库)
通过Pandas可快速读取并处理该空格分隔的CSV数据,代码如下:
import pandas as pd # 替换为你的CSV文件实际路径 file_path = "C:/YourFolder/sales_data.csv" # 读取多空格分隔的CSV,sep='\s+'匹配任意数量连续空格 df = pd.read_csv(file_path, sep='\s+') # 按示例格式解析日期列 df['OrderDate'] = pd.to_datetime(df['OrderDate'], format='%d/%m/%Y %H:%M') df['DueDate'] = pd.to_datetime(df['DueDate'], format='%d/%m/%Y %H:%M') df['ShipDate'] = pd.to_datetime(df['ShipDate'], format='%d/%m/%Y %H:%M') # 可选:输出处理后的前5行数据验证 print(df.head())
关键说明:
- 需提前安装Pandas:执行
pip install pandas sep='\s+'解决示例中多空格分隔导致的列读取错位问题- 日期格式
%d/%m/%Y %H:%M完全匹配示例中的日期格式,确保解析正确
内容的提问来源于stack exchange,提问作者xlmaster
相关产品推荐
相关产品推荐

