将单个索引数据帧添加到多索引数据框,Pandas,Python

时间:2018-05-17 15:36:50

标签: python pandas dataframe

如何将单个数据帧添加到多索引数据帧? 例如

我的多索引数据是

                Name  Code  Buying_Date  Buying_Price  Buying_Qty  

Date     Code                                                      
20140117 none   a   1234          20170101           5         7   
20170120 none   b   5678          20180101           6         8   

我希望将以下数据添加到'日期' =' 20170120'

                Name  Code  Buying_Date  Buying_Price  Buying_Qty  

  Code                                                      
  abcd           af   abcd   20170101           5         7   
  efgh           bf   efgh   20180101           6         8   

欲望结果是

               Name  Code  Buying_Date  Buying_Price  Buying_Qty  

Date     Code                                                      
20140117 none   a   1234          20170101           5         7   
20170120 none   b   5678          20180101           6         8  
         abcd   af  abcd          20170101           5         7   
         efgh   bf  efgh          20180101           6         8   

提前感谢您的建议。

1 个答案:

答案 0 :(得分:1)

您可以使用:

df = df1.append(df2.assign(Date=20170120).set_index('Date', append=True).swaplevel(0,1))
print (df)
               Buying_Date  Buying_Price  Buying_Qty  Code  Code.1 Name
Date     Code                                                          
20140117 none     20170101             5           7   NaN  1234.0    a
20170120 none     20180101             6           8   NaN  5678.0    b
         abcd     20170101             5           7  abcd     NaN   af
         efgh     20180101             6           8  efgh     NaN   bf

<强>详细

print (df2.assign(Date=20170120).set_index('Date', append=True).swaplevel(0,1))
              Name  Code  Buying_Date  Buying_Price  Buying_Qty
Date     Code                                                  
20170120 abcd   af  abcd     20170101             5           7
         efgh   bf  efgh     20180101             6           8

<强>解释

  1. 第一个assign新列,并按set_index
  2. 添加到index {li> swaplevel MultiIndex 中的等级
  3. 上次append到第一个DataFrame