如何重新排列单独的数据帧并将它们连接到单个摘要数据帧中?

2024-09-29 02:28:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

result=pd.DataFrame({'BID':1.87,'ASK':1.95},index=[0])

result1=pd.DataFrame({'BID':1.95,'ASK':2.05},index=[0])

result2=pd.DataFrame({'BID':1.95,'ASK':2.065},index=[0])

result.index.name='nok'

result1.index.name='sek'

result2.index.name='dkk'

我需要将这些数据帧放在汇总数据帧中,如下所示,货币是前一个数据帧的索引名,并将“出价”和“询问”需求分配给相应的列:

enter image description here

我试图创建一个空数据帧:

summary=pd.DataFrame(columns=['CURRENCY','BID','ASK'])

并尝试附加值,但没有成功

summary=summary.append({'CURRENCY':result.index.name,'BID':result['BID'],'ASK':result['ASK']})

Tags: 数据namedataframeindexresultsummarycurrencyask
2条回答

如前所述,您可以连接数据帧:

df = pd.concat([result, result1, result2], axis=0, ignore_index=True)

当ignore_index=True时,这是您的打印:

        BID    ASK
    0  1.87  1.950
    1  1.95  2.050
    2  1.95  2.065

如果要引用此新数据帧中的数据,此选项非常有用。否则:

df = pd.concat([result, result1, result2], axis=0)

然后,重新创建货币标签

 idx = 0   
 df.insert(loc =idx,column = '',value=['nok','sek','dkk'])

 print(df)
         BID    ASK
 0  nok  1.87  1.950
 1  sek  1.95  2.050
 2  dkk  1.95  2.065

您正在寻找的是Pandas.concat()方法。它使用数据帧列表进行关联,并使用“axis=0/1”参数分别确定是按行还是按列进行关联

但是,您可以通过创建一个适当的字典,将DataFrame全部安排好,从而跳过这一点:

df_dict = {'NOK' : {'BID':1.87,'ASK':1.95},
           'SEK' : {'BID':1.95,'ASK':2.05},
           'DKK' : {'BID':1.95,'ASK':2.065}}

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

orient参数确定初始值为行(默认情况下为列)

相关问题 更多 >