【问题标题】:Pandas data frame from dictionary returns values as tuple字典中的 Pandas 数据框将值作为元组返回
【发布时间】: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

标签: python pandas dictionary tuples


【解决方案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())}) 只需将列表放在值的前面。并且原始代码有效。 仍然不知道为什么在一台电脑上必须站立列表,而在另一台上则不是。

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 2021-02-22
    • 2021-11-19
    • 2015-10-20
    • 2022-01-10
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多