python - 如何将 defaultdict(list) 转换为 Pandas DataFrame

标签 python pandas dataframe defaultdict

我有一个具有这种结构的 defaultdict(list) 对象:

{id: [list[list]]}

例如,
'a1': [[0.01, 'cat']],

'a2': [[0.09, 'cat']],

'a3': [[0.5, 'dog']],

...

我想转这个defaultdict(list)Pandas DataFrame目的。

我尝试了以下内容:
df = pd.DataFrame(list(my_dict.items()), columns=['id', 'category'])
但是,我的“类别”列遇到了问题。这是列表列表的列。我试图将“类别”中的 2 个值拆分为 2 个单独的列。所以我最后的 DataFrame 列将是 ['id', 'score', 'category']。

当我尝试使用以下应用功能时:
db['category'].apply(lambda x: x[0][0])
我收到“列表索引超出范围”的错误。

我的代码可能有什么问题?如何从列表列表中创建 2 个新列?

谢谢你。

最佳答案

我相信你需要:

df = pd.DataFrame([[k] + v[0] for k, v in my_dict.items()], 
                   columns=['id', 'score', 'category'])

或者:
df = pd.DataFrame([(k, v[0][0], v[0][1]) for k, v in my_dict.items()], 
                   columns=['id', 'score', 'category'])

关于python - 如何将 defaultdict(list) 转换为 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54122942/

相关文章:

python - 如何将 pandas 数据框行堆叠成两半?

python - 使用相似键和不同键的组合组合/合并字典

Python-将许多列表字典添加到持久主字典时的性能

python - 如何比较数据框 Pandas 中的列?

python - 根据唯一的列值重复数据帧行 n 次,并为每行重复创建具有不同值的新列

python - 重命名多索引pandas列的单列

python - 如何根据行范围的满足条件删除列?

python - pandas - 按 index.name 与数据帧相交

r - 有没有一种快速计算多列乘法结果的方法,但根据 NA 值具有不同的比例?

r - R 中的 If 语句,带有数据框