如何从SQL中读取数值并存入字典的列表中。

huangapple go评论65阅读模式
英文:

How to read values from SQL into a dict of lis

问题

我正在使用 pymssql 库从 SQL Server 中读取数值,使用以下代码:

df = pd.read_sql_query(query, cnxn)

这将给我一个如下所示的 DataFrame(df):

addr      port     device_id
==============================
XXX       1001      01
XXX       1001      02
XXX       1001      03
YYY       1001      04
YYY       1001      05

是否有一种方法可以将这个 DataFrame 转换为以下所示的字典列表:

{ 
'addr': ['XXX', 'XXX', 'XXX'],
'port': [1001, 1001, 1001],
'device_id': ['01', '02', '03']
},
{
'addr': ['YYY', 'YYY'],
'port': [1001, 1001],
'device_id': ['04', '05']
}

谢谢。

英文:

I am reading values from SQL server using pymssql library using the below code

df = pd.read_sql_query(query, cnxn)

This is giving me a df as below

addr      port     device_id
==============================
XXX       1001      01
XXX       1001      02
XXX       1001      03
YYY       1001      04
YYY       1001      05

Is there a way to convert this df into a dict of list as shown below,

{ 
'addr': [XXX, XXX, XXX],
'port': [1001,1001,1001],
'device_id': [01, 02, 03]
},
{
'addr': [YYY,YYY],
'port': [1001,1001],
'device_id': [04, 05]
}

Thanks,

答案1

得分: 1

使用 [tag:pandas],您可以使用 groupby.applyto_dict

out = df.groupby('addr').apply(lambda g: g.to_dict('list')).to_list()

输出:

[{'addr': ['XXX', 'XXX', 'XXX'],
  'port': [1001, 1001, 1001],
  'device_id': [1, 2, 3]},
 {'addr': ['YYY', 'YYY'],
  'port': [1001, 1001],
  'device_id': [4, 5]},
]
英文:

Assuming [tag:pandas], you can use groupby.apply and to_dict:

out = df.groupby('addr').apply(lambda g: g.to_dict('list')).to_list()

Output:

[{'addr': ['XXX', 'XXX', 'XXX'],
  'port': [1001, 1001, 1001],
  'device_id': [1, 2, 3]},
 {'addr': ['YYY', 'YYY'],
  'port': [1001, 1001],
  'device_id': [4, 5]},
]

huangapple
  • 本文由 发表于 2023年6月16日 16:05:50
  • 转载请务必保留本文链接:https://go.coder-hub.com/76488165.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定