英文:
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.apply
和 to_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]},
]
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论