当前位置: 首页 > 知识库问答 >
问题:

熊猫:从字典创建数据帧

龙新荣
2023-03-14

拿着字典:

dict = {'a':'ham', 'b': 'ham', 'c': 'chicken', 'd': 'beef', 'e': 'chicken'}

我如何把这个字典变成一个数据框,其中的值是列?即。我想要一个数据框显示:

   ham   chicken  beef
0   a       c       d
1   b       e       

这种形式似乎根本得不到!

谢谢

这是一个不同的问题,另一个问题只是问如何将字典的值放入数据帧,我问的是如何获得我概述的特定形式

共有2个答案

尹俊雅
2023-03-14

我看到Jan刚刚发布了一个很好的答案,但是我想展示你也可以使用default的和列表理解来做到这一点。

import pandas as pd
from collections import defaultdict

dict1 = {'a':'ham', 'b': 'ham', 'c': 'chicken', 'd': 'beef', 'e': 'chicken'}

# Set the default as an empty list to store multiple strings with an order
reversed_dict = defaultdict(list)

# Reverse the key-value pairs
for k, v in dict1.items():
    reversed_dict[v].append(k)

# Convert each list to a Series and make the dataframe
pd.DataFrame(dict([(k, pd.Series(v)) for k, v in reversed_dict.items()]))

#   beef chicken ham
# 0    d       c   a
# 1  NaN       e   b
司毅庵
2023-03-14

一点转换“魔法”:

import pandas as pd

d = {'a':'ham', 'b': 'ham', 'c': 'chicken', 'd': 'beef', 'e': 'chicken'}

new_dict = dict()
for key in d:
    col = d[key]
    try:
        new_dict[col].append(key)
    except:
        new_dict[col] = [key]

df = pd.DataFrame.from_dict(new_dict, orient='index').transpose()
print(df)

#   chicken ham  beef
# 0       c   a     d
# 1       e   b  None

首先,浏览原始词典,在名为new\u dict的新词典中创建一个列表。从这一次调用中,From_dict()orient='index'

 类似资料:
  • 我有一本字典的形式: 例如, 我想转换成熊猫数据帧与列1的用户名和其他列的电影评级,即: 但是,一些用户没有对电影进行评分,因此这些电影不包括在该用户键()的值()中。在这种情况下,只需用NaN填充条目就好了。 现在,我迭代键,填充列表,然后使用此列表创建数据帧: 但这只给了我一个用户的数据框,这些用户对片场中的所有电影都进行了评分。 我的目标是通过迭代电影标签(而不是上面显示的暴力方法)来追加到

  • 我正在尝试制作一个数据帧,以便可以轻松地将其发送到CSV,否则我必须手动执行此过程。。 我希望这是我的最终输出。每个人都有一个月和年的组合,从2014年1月1日开始,一直到2016年1月12日: 到目前为止的代码: 当我尝试循环创建数据帧时,它要么不工作,要么出现索引错误(因为不匹配列表),我不知所措。 我已经做了一点很好的搜索,并找到了以下一些类似的链接,但我不能反向工程的工作,以适应我的情况。

  • 问题内容: 我终于从包含许多json对象的文件中获得了我需要的数据输出,但是当它在数据中循环时,我需要一些帮助将以下输出转换为单个数据帧。这是产生输出的代码,包括输出外观的示例: 原始数据: 运行上面的命令时,我将获得示例输出,我希望将其存储为3列的pandas数据框中。 因此,以下代码似乎更接近,因为如果我在列表中传递并转置df,它会给我一个时髦的df。关于如何正确调整此形状的任何想法吗? 数据

  • 我需要从不同的字典中创建一个熊猫数据框架,其中键必须作为数据框架内的列名。如果数据帧没有将键列为列,则必须动态创建键,并将其作为新列附加到数据帧。 我希望输入为, 输出应该是,, 循环的第一次迭代将键作为数据框的列名称,如果没有数据框,则创建值作为第一行的数据框。 第二次迭代检查键是否作为列出现在数据帧中,如果已经出现则插入,否则创建列并插入值作为第二行。 我确实不知道如何在python中动态运行

  • 我得到以下输出: 当我尝试使用Res_fs1、Res_fs2、Res_ps1、Res_ps2创建numppy数组时 我得到这个错误消息说键错误,虽然键存在:

  • 问题内容: 我想从值中创建一个字典,我从excel单元中获取,我的代码如下, 我想创建一个字典,如下所示,其中包含来自excel单元格的值; 关于如何创建此字典的任何想法吗? 问题答案: