如何将Pandas DataFrame转为以索引为键、NumPy数组为值的字典?
如何将Pandas DataFrame转换为索引为键、行值为NumPy数组的字典?
这确实是to_dict('index')的一个小局限——它默认会把每行转成字典而不是NumPy数组。不过有几个简单的办法能轻松实现你的需求,我给你列几个常用的方案:
方法1:使用apply逐行转换
利用apply按行处理,把每行直接转为NumPy数组,再转成字典:
result_dict = df.apply(lambda row: row.to_numpy(), axis=1).to_dict()
axis=1指定按行遍历row.to_numpy()将单行数据转换为NumPy数组- 最后调用
to_dict()就会自动把DataFrame的索引作为字典的键
方法2:字典推导式(直观高效)
直接遍历DataFrame的索引,用loc取出对应行并转为数组,适合小到中等规模的数据集:
result_dict = {idx: df.loc[idx].to_numpy() for idx in df.index}
这个写法逻辑非常清晰,一眼就能看明白是把每个索引对应行转成数组作为值。
方法3:批量转换后配对索引(大数据集首选)
如果你的DataFrame数据量很大,先一次性把整个DataFrame转为二维NumPy数组,再和索引配对生成字典,效率会更高:
array_data = df.to_numpy() result_dict = dict(zip(df.index, array_data))
df.to_numpy()一次性完成整个数据集的格式转换,比逐行处理更快zip(df.index, array_data)把索引和每行数组一一对应,再用dict()转为字典
验证结果
你可以打印其中一个键对应的值来确认:
print(result_dict[0]) # 输出类似:array([0.88095214, 0.62363749])
内容的提问来源于stack exchange,提问作者Lukas Hestermeyer
相关产品推荐
相关产品推荐

