字典中的 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:如何将列中的分组列表作为字典返回