我有14个数据框。
它们都有一个索引和1个称为“总计”的列
以下是1个DataFrame的示例: https://i.gyazo.com/8b31f92a469e31df89a29e4588427362.png
索引是“ Res Area” 列为“总计”
所以我要做的是将它们全部合并到1个数据帧中,其中索引将是 df的名称和“总计”列以比较所有这些DF。
我尝试将df放入字典中,键为df的名称,将其前十名的合计值相加在一起,但它不起作用
我尝试将df放入字典中,键为df的名称,将其前十名的合计值相加在一起,但它不起作用
df = pd.DataFrame({'Res Area': resarea_df.Total[:10].sum(), 'Year Built': yearbuilt_df.Total[:10].sum(),'Retail Area': retailarea_df.Total[:10].sum()})
我看到一条错误消息:
如果使用所有标量值,则必须传递索引
我只想将所有df合并为1个df,以查看每个df的前10个总计之和,然后将它们相互比较,将它们绘制在图上
答案 0 :(得分:1)
您为DataFrame调用了错误的构造函数。使用标量值字典(其中键成为索引),您要使用.from_dict
构造函数:
import pandas as pd
data= {'data1': 1, 'data2': 2, 'data3': 15}
pd.DataFrame.from_dict(data, orient='index', columns=['Total'])
# Total
#data1 1
#data2 2
#data3 15
为解释您所遇到的问题,在使用pd.DataFrame和字典构造DataFrame时,默认设置是将DataFrame的键设置为列。通常,传递的字典的值类似于数组,这允许pandas
确定要创建多少行。但是,使用所有标量值并且没有索引,无法知道它需要多少行。
data= {'data1': 1, 'data2': 2, 'data3': 15}
pd.DataFrame(data)
#ValueError: If using all scalar values, you must pass an index
要正确执行此操作,您需要指定一个索引:
pd.DataFrame(data, index=[0])
# data1 data2 data3
#0 1 2 15
或者使至少一个类似数据数组的值:
data2 = {'data1': 1, 'data2': 2, 'data3': [15]}
pd.DataFrame(data2)
# data1 data2 data3
#0 1 2 15