如何将长度不一致的字典转换为Python DataFrame?
字典转目标格式DataFrame的实现方法
你需要将字典的键作为cluster列的值,对应列表中的每个元素作为value列的值,把嵌套结构展开成扁平的DataFrame,以下两种方法可以实现:
方法一:列表推导式构造数据
先通过列表推导式生成包含(cluster, value)的元组列表,再转换为DataFrame:
import pandas as pd have = {0: [1, 2], 1: [1]} # 生成展开后的元组列表 data = [(cluster, val) for cluster, vals in have.items() for val in vals] # 转换为DataFrame并指定列名 df = pd.DataFrame(data, columns=['cluster', 'value'])
方法二:利用pandas的explode方法
先将字典转为Series,再通过explode方法展开列表,最后调整列名和数据类型:
import pandas as pd have = {0: [1, 2], 1: [1]} # 字典转Series,索引为cluster,值为对应列表 s = pd.Series(have) # 展开列表并重置索引 df = s.explode().reset_index() # 设置列名 df.columns = ['cluster', 'value'] # 将value列转为整数类型(explode后可能为字符串) df['value'] = df['value'].astype(int)
两种方法运行后得到的DataFrame结构均符合你的需求:
cluster value 0 0 1 1 0 2 2 1 1
内容的提问来源于stack exchange,提问作者spazznolo
相关产品推荐
相关产品推荐

