当前位置: 首页 > 知识库问答 >
问题:

向dataframe追加多个字典:错误dataframe构造函数未正确调用?

谭伟
2023-03-14

我正在尝试获取一个字典熊猫数据帧。我在一些事情上遇到了麻烦。我尝试了以下方法

data = {'applicableMargin': '12.50', 'marketType': 'N', 'totalBuyQuantity': '1,14,514', 'buyPrice1': '1,546.30', 'dayLow': '1,541.20', 'symbol': 'ACC', 'cm_adj_low_dt': '23-MAR-17', 'open': '1,571.50', 'sellPrice2': '1,547.85', 'sellPrice4': '1,547.95', 'cm_ffm': '13,249.84', 'buyPrice3': '1,546.00', 'css_status_desc': 'Listed', 'ndStartDate': '-', 'buyQuantity1': '43', 'totalTradedValue': '1,468.42', 'surv_indicator': '-', 'recordDate': '26-JUL-17', 'secDate': '16MAR2018', 'faceValue': '10.00', 'totalTradedVolume': '94,384', 'pricebandlower': '1,411.20', 'sellQuantity4': '16', 'averagePrice': '1,555.79', 'buyPrice2': '1,546.05', 'totalSellQuantity': '84,873', 'closePrice': '0.00', 'buyPrice4': '1,545.90', 'extremeLossMargin': '5.00', 'isinCode': 'INE012A01025', 'buyQuantity4': '48', 'sellPrice3': '1,547.90', 'bcEndDate': '-', 'buyQuantity5': '27', 'indexVar': '-', 'purpose': 'INTERIM DIVIDEND - RS 11/- PER SHARE', 'sellQuantity5': '286', 'series': 'EQ', 'low52': '1,380.40', 'dayHigh': '1,573.70', 'pricebandupper': '1,724.70', 'basePrice': '1,567.95', 'lastPrice': '1,546.05', 'sellQuantity2': '32', 'deliveryToTradedQuantity': '50.45', 'high52': '1,869.95', 'cm_adj_high_dt': '13-SEP-17', 'sellQuantity1': '67', 'buyQuantity2': '155', 'isExDateFlag': False, 'quantityTraded': '2,53,481', 'previousClose': '1,567.95', 'securityVar': '5.74', 'bcStartDate': '-', 'sellQuantity3': '25', 'ndEndDate': '-', 'buyQuantity3': '31', 'companyName': 'ACC Limited', 'sellPrice1': '1,547.65', 'adhocMargin': '-', 'sellPrice5': '1,548.00', 'change': '-21.90', 'exDate': '25-JUL-17', 'varMargin': '7.50', 'pChange': '-1.40', 'buyPrice5': '1,545.85', 'priceBand': 'No Band'}



pd_cols = []
for i in data:
    pd_cols.append(i)

#fut_data = pd.DataFrame()
#fut_data.columns = pd_cols
fut_data = pd.DataFrame(data.items(), columns=pd_cols)

这会产生以下错误:

回溯(最近一次调用):文件“”,第1行,在文件“C:\Python34\lib\site packages\pandas\core\frame.py”的第345行中,在

在这之后,我将有一堆更多的法规,它们将具有相同的。我想把它们都添加到同一个数据库

提前谢谢。

共有3个答案

蒋鸿文
2023-03-14

虽然前面的答案更好,你可以尝试这个荒谬的解决方案,如果它适合你:

    fut_data = pd.DataFrame(data,index=[0])

要添加更多行,您可以尝试:

    fut_data1 = pd.DataFrame(data1,index=[1])
    fut_data.append(fut_data1)

或者

    fut_data1 = pd.DataFrame(data1,index=[i]) #where i is a loop variable
    fut_data.append(fut_data1)
李意致
2023-03-14

这是否为您提供了所需的输出?

import pandas as pd
data = {'applicableMargin': '12.50', 'marketType': 'N', 'totalBuyQuantity': '1,14,514', 'buyPrice1': '1,546.30', 'dayLow': '1,541.20', 'symbol': 'ACC', 'cm_adj_low_dt': '23-MAR-17', 'open': '1,571.50', 'sellPrice2': '1,547.85', 'sellPrice4': '1,547.95', 'cm_ffm': '13,249.84', 'buyPrice3': '1,546.00', 'css_status_desc': 'Listed', 'ndStartDate': '-', 'buyQuantity1': '43', 'totalTradedValue': '1,468.42', 'surv_indicator': '-', 'recordDate': '26-JUL-17', 'secDate': '16MAR2018', 'faceValue': '10.00', 'totalTradedVolume': '94,384', 'pricebandlower': '1,411.20', 'sellQuantity4': '16', 'averagePrice': '1,555.79', 'buyPrice2': '1,546.05', 'totalSellQuantity': '84,873', 'closePrice': '0.00', 'buyPrice4': '1,545.90', 'extremeLossMargin': '5.00', 'isinCode': 'INE012A01025', 'buyQuantity4': '48', 'sellPrice3': '1,547.90', 'bcEndDate': '-', 'buyQuantity5': '27', 'indexVar': '-', 'purpose': 'INTERIM DIVIDEND - RS 11/- PER SHARE', 'sellQuantity5': '286', 'series': 'EQ', 'low52': '1,380.40', 'dayHigh': '1,573.70', 'pricebandupper': '1,724.70', 'basePrice': '1,567.95', 'lastPrice': '1,546.05', 'sellQuantity2': '32', 'deliveryToTradedQuantity': '50.45', 'high52': '1,869.95', 'cm_adj_high_dt': '13-SEP-17', 'sellQuantity1': '67', 'buyQuantity2': '155', 'isExDateFlag': False, 'quantityTraded': '2,53,481', 'previousClose': '1,567.95', 'securityVar': '5.74', 'bcStartDate': '-', 'sellQuantity3': '25', 'ndEndDate': '-', 'buyQuantity3': '31', 'companyName': 'ACC Limited', 'sellPrice1': '1,547.65', 'adhocMargin': '-', 'sellPrice5': '1,548.00', 'change': '-21.90', 'exDate': '25-JUL-17', 'varMargin': '7.50', 'pChange': '-1.40', 'buyPrice5': '1,545.85', 'priceBand': 'No Band'}
df = pd.DataFrame.from_dict([data])

print(df.iloc[:,:5])

当我运行上面我得到一个1行数据帧:

  adhocMargin applicableMargin averagePrice basePrice bcEndDate
0           -            12.50     1,555.79  1,567.95         -

如果您有多个类似的dict,请将它们全部放在如下列表中:

df = pd.DataFrame.from_dict([data1,data2])

这会产生一个数据帧,每行一个判决。

许俊贤
2023-03-14

这对我有用。由于此错误适用于您,您可能会出现复制粘贴错误。

fut_data = pd.DataFrame.from_dict(data, orient='index').T

print(fut_data)

#   applicableMargin marketType totalBuyQuantity buyPrice1    dayLow symbol  \
# 0            12.50          N         1,14,514  1,546.30  1,541.20    ACC   

#   cm_adj_low_dt      open sellPrice2 sellPrice4    ...     companyName  \
# 0     23-MAR-17  1,571.50   1,547.85   1,547.95    ...     ACC Limited   

#   buyPrice5 priceBand  
# 0  1,545.85   No Band  

# [1 rows x 67 columns]

您可以按如下方式追加:

df = pd.DataFrame.from_dict(data, orient='index').T

df = df.append(pd.DataFrame.from_dict(data2, orient='index').T)

这里的data2是另一个类似的字典。

 类似资料:
  • 我正在尝试使用mosquitto接收数据,并使用python pandas将其保存为csv文件。在我停止脚本之前,数据是连续的。 mqtt\U发布。py mqtt_sub.py代码 从上面的脚本中,我得到了测试。csv

  • 问题内容: 我提出了有关添加带有WITH索引的行的问题,但是我还不清楚在没有索引的情况下这是为什么/为什么发生: 我希望这里有2X4数据帧。但是,没有添加任何值,也没有发生错误。 为什么不添加系列,为什么不出现任何错误? 如果我尝试使用LOC添加行,则会添加索引, 结果: 我猜LOC和iLOC都不能用于添加没有索引名称的行(即Loc添加索引名称NaN,并且当索引号高于数据库行时不能使用iLoc)

  • 问题内容: 我在Pandas中构建3D DataFrame有困难。我想要这样的东西 其中,等是顶级描述符,而和是子描述符。接下来的数字是成对的,而,等的对数则不同。观察有四个这样的对,只有1个,有3个。 我不确定如何继续构造此DataFrame。修改此示例并没有给我设计输出: 产生: 有什么办法可以将C中的列表分解成自己的列? 编辑:我的结构很重要。看起来如下: 所需的输出是顶部的输出。它表示某个

  • 问题内容: 假设我有一个嵌套的字典,其结构为: 级别1: UserId(长整数) 级别2:类别(字符串) 级别3:各种属性(浮点数,整数等)。 例如,该词典的条目为: 其中的每个项目都user_dict具有相同的结构,并且user_dict包含大量的项目,我希望将这些项目提供给pandas DataFrame,从而根据属性构造系列。在这种情况下,分层索引对于此目的将是有用的。 具体来说,我的问题是

  • 问题内容: 我想将JSON数据存储在Python Pandas DataFrame中 我的JSON数据是像这样的字典的字典 我这样做是为了将数据放入DataFrame 我明白了 我的问题是我的DataFrame包含字典而不是值。 我想知道如何使用Pandas DataFrame管理多维数据(超过2个维度…这里有3个维度)。 DataFrame中的每个字典都有相同的键。 问题答案: df = pd.

  • 问题内容: 我有一个4个熊猫数据框的列表,其中包含我想合并为一个数据框的一天的报价数据。我无法理解concat在时间戳上的行为。请参阅以下详细信息: 使用我得到: 使用我得到: 注意使用时索引如何变化。为什么会发生这种情况,我将如何使用该方法来重现使用所获得的结果?(因为看上去快得多;每个循环24.6 ms,而每个循环3.02 s) 问题答案: 因此,您正在执行的操作是append和concat