字典中的 Pandas 数据框将值作为元组返回

Posted

技术标签:

【中文标题】字典中的 Pandas 数据框将值作为元组返回【英文标题】:Pandas data frame from dictionary returns values as tuple 【发布时间】:2021-06-01 19:46:34 【问题描述】:

大家好,如果有人能给我一个解释,我将不胜感激。 这是一个代码:

#Dict- 
hours_year='2018': 900 , '2019':456 
# Making a df

df=pd.DataFrame('Year': hours_year.keys(), 'Hours': hours_year.values()) 
df
#Output

            Year    Hours
0   (2018, 2019)    (900, 456)

1   (2018, 2019)    (900, 456)

我的问题是 - 为什么是元组?在其他电脑上,与 jupyter 相同,它返回正常的 df。 可能是我正在使用的python版本吗?只是猜测.. 感谢您的帮助

【问题讨论】:

这可能取决于您使用的熊猫版本。在版本 '1.2.0' 中,它返回 `Year Hours 0 2018 900 1 2019 456` 这是我的想法,所以我更新了 pandas 模块,我目前的版本是 1.0.1 【参考方案1】:

创立here:

pd.DataFrame(hours_year, index=['i',])

否则,你应该尝试from_dict函数,但你的数据需要是列表。

df = pd.DataFrame.from_dict(hours_year, columns=['Years', 'Hours'])

另一种解决方案,但您需要再次更改数据:

hours_year='2018': [900,] , '2019':[456,]
pd.DataFrame(hours_year)

【讨论】:

使用该代码得到:ValueError: cannot use columns parameter with orient='columns',所以我添加了 orient, df = pd.DataFrame.from_dict(hours_year,orient='index',columns= ['Years', 'Hours']),然后我得到了这个 ValueError:传递值的形状是 (2, 1),索引意味着 (2, 2)。我用这段代码解决了问题 details = 'Year' :['2018','2019'], 'Hours' : [3702, 9818] # 创建一个 Dataframe 对象 df = pd.DataFrame(details) 我只是这样做不明白为什么它不适用于我用过很多次的东西。【参考方案2】:

我解决了 df=pd.DataFrame('Year': list(hours_year.keys()), 'Hours': list(hours_year.values())) 只需将列表放在值的前面。并且原始代码有效。 仍然不知道为什么在一台电脑上必须站立列表,而在另一台上则不是。

【讨论】:

以上是关于字典中的 Pandas 数据框将值作为元组返回的主要内容,如果未能解决你的问题,请参考以下文章

Python Pandas:如何将列中的分组列表作为字典返回

Pandas 替换列中的值,但 to_replace 参数是包含元组的元组

python字典操作函数

使用字典作为参数映射 Pandas 系列,其中值是元组

返回与字典中第三个值最小的元组对应的键

使用元组键将 Pandas 数据框转换为字典以进行三元图