【问题标题】:Putting dictionary values into data frame new column in python pandas将字典值放入python pandas中的数据框新列
【发布时间】:2023-03-22 13:31:01
【问题描述】:

我有一个包含键和值的 python 字典,我希望创建一个新的 pandas 数据框对象,其中包含一个仅由字典值构造的新列。实现这一目标的最优化方法是什么?

【问题讨论】:

  • 可以加样吗?也许工作简单df = pd.DataFrame(d)
  • 例如,我有一个字典作为 name (key) 和 score(value) [tom:100, jerry:150, micky:400, donald:250] 现在我想要的只是一个数据框列名称为“分数”,具有此字典中的所有分数(值)。说像 df['scores'] = ...
  • 不,将示例放在原始问题中,而不是在评论中

标签: python pandas dataframe


【解决方案1】:

我觉得你需要DataFrame.from_dict:

d = {'tom':100, 'jerry':150, 'micky':400, 'donald':250}

df = pd.DataFrame.from_dict(d, orient='index')
df.columns = ['scores']
print (df)
        scores
micky      400
donald     250
jerry      150
tom        100

另一种解决方案是将带有新列名的dict 添加到DataFrame 构造函数:

df = pd.DataFrame({'scores':d})

print (df)
        scores
donald     250
jerry      150
micky      400
tom        100

如果需要,最后从索引中删除名称添加 reset_index:

print (df.reset_index(drop=True))
   scores
0     400
1     250
2     150
3     100

另一种解决方案是仅使用dict 中的values,但python 字典总是无序的,因此在df 中获取随机值顺序:

print (d.values())
dict_values([400, 250, 150, 100])

#python 3 add list
df = pd.DataFrame({'scores': list(d.values())})
print (df)
   scores
0     400
1     250
2     150
3     100

【讨论】:

  • 感谢@jezrael 的快速回复。我希望达到你最后一步所示的结果——没有名字。我正在寻找一种优化的方法来实现这一点,因为我的示例是一个小数据集。如果我们有一个庞大的数据集,但我们首先将整个字典加载到数据框中,然后删除名称怎么办。我们可以直接将值加载到数据框中吗?
  • 我添加了最后一个解决方案,我相信它可以是最快的。
猜你喜欢
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 2021-01-12
相关资源
最近更新 更多