尝试将 Dictionary 转换为 DataFrame Pandas 时出现 ValueError

Posted

技术标签:

【中文标题】尝试将 Dictionary 转换为 DataFrame Pandas 时出现 ValueError【英文标题】:ValueError when trying to convert Dictionary to DataFrame Pandas 【发布时间】:2020-03-29 17:27:44 【问题描述】:

我有一本这样的字典:

'6DEC19': 0.61, '13DEC19': 0.58, '27DEC19': 0.63, '31JAN20': 0.66, '27MAR20': 0.69, '26JUN20': 0.71

我非常简单地尝试将其转换为 DataFrame,其列为 6DEC1913DEC19 等,然后将索引设置为当前日期和时间,我将使用该代码作为pd.Timestamp.now().floor('60min').

生成的df 如下所示:

                    6DEC19  13DEC19  27DEC19  31JAN20  27MAR20  26JUN20
2019-12-04 20:00:00 0.61    0.58     0.63     0.66     0.69     0.71

我的第一步是将字典转换为数据框,就我而言,这段代码应该可以解决问题:

df = pd.DataFrame.from_dict(dict)

但我收到此错误消息:ValueError: If using all scalar values, you must pass an index

我真的不知道这里有什么问题?任何建议都会很棒,如果有人能解决将索引更改为降价的问题,那就更好了。干杯

【问题讨论】:

重复:this 【参考方案1】:

试试这个

newDF = pd.DataFrame(yourDictionary.items())

【讨论】:

【参考方案2】:

试试这个:

import pandas as pd

a = '6DEC19': [0.61], '13DEC19': [0.58], '27DEC19': [0.6], '31JAN20': [0.66], '27MAR20': [0.69], '26JUN20': [0.71]

df = pd.DataFrame.from_dict(a)

print(df)

【讨论】:

【参考方案3】:

正如错误消息所说,您需要指定索引,因此您可以执行以下操作:

import pandas as pd

d = '6DEC19': 0.61, '13DEC19': 0.58, '27DEC19': 0.63, '31JAN20': 0.66, '27MAR20': 0.69, '26JUN20': 0.71
df = pd.DataFrame(d, index=[pd.Timestamp.now().floor('60min')])

print(df)

输出

                     6DEC19  13DEC19  27DEC19  31JAN20  27MAR20  26JUN20
2019-12-04 17:00:00    0.61     0.58     0.63     0.66     0.69     0.71

【讨论】:

这很好,谢谢伙计,为什么添加索引会阻止错误?为什么不能一开始就将索引设置为 0?再次感谢 @topbantz 我相信这是一个实施决定,不能肯定地说。

以上是关于尝试将 Dictionary 转换为 DataFrame Pandas 时出现 ValueError的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.iOS,将 Dictionary 转换为 NSDictionary

如何将 swift Dictionary 转换为 NSDictionary

将List的String表示形式转换为Dictionary Python

将 [Dictionary<String,Any?>] 转换为 [Dictionary<String,Any!>] ?迅速 3

将 XML 转换为 Dictionary<String,String>

将 List<object> 转换为 Dictionary<propertyname,propertyvalue>