如何将Pythonnet获取的System.Data DataSet转换为Pandas DataFrame?
将System.Data.DataSet转换为Pandas DataFrame(Pythonnet场景)
你可以通过遍历DataSet中的DataTable,提取列名和行数据来快速转换为Pandas DataFrame,以下是简便的实现方式:
完整实现代码
clr.AddReference(r"C:\Windows\assembly\GAC_MSIL\Microsoft.AnalysisServices.AdomdClient\11.0.0.0__89845dcd8080cc91\Microsoft.AnalysisServices.AdomdClient.dll") clr.AddReference("System.Data") from Microsoft.AnalysisServices.AdomdClient import AdomdConnection, AdomdDataAdapter from System.Data import DataSet import pandas as pd conn = AdomdConnection("Data Source=tooldata.amr.xxx.com;Catalog=someDB;") conn.Open() cmd = conn.CreateCommand() cmd.CommandText = "your mdx query" adp = AdomdDataAdapter(cmd) datasetParam = DataSet() adp.Fill(datasetParam) # 核心转换逻辑 data_table = datasetParam.Tables[0] # 取DataSet中的第一个DataTable,多表场景可指定索引 columns = [col.ColumnName for col in data_table.Columns] df = pd.DataFrame([[row[col] for col in columns] for row in data_table.Rows], columns=columns) conn.Close() # 验证转换结果 print(df.head())
关键说明
- 先从DataSet中获取目标
DataTable:通常取第一个表(Tables[0]),如果存在多表,可根据实际需求指定对应索引 - 提取
DataTable的列名作为DataFrame的列标签 - 遍历
DataTable的每一行,将行数据转为Python列表,最终通过pd.DataFrame构造DataFrame - Pythonnet会自动处理大部分.NET基本类型(如字符串、数字、日期)到Python类型的转换,特殊类型可按需额外处理
内容的提问来源于stack exchange,提问作者marc nicole
相关产品推荐
相关产品推荐

