合并重复的索引值为单行(单索引)pandas

2024-09-29 23:30:44 发布

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

使用如下所示的df,并希望将重复的索引值压缩到一行中:

            ask     bid
date        
2011-01-03  0.32    0.30
2011-01-03  1.03    1.01
2011-01-03  4.16    4.11

预期的输出是(暂时不重要的列名将手动设置):

            ask     bid     ask1    bid1    ask2    bid2
date        
2011-01-03  0.32    0.30    1.03    1.01    4.16    4.11

Tags: dfdate手动askbid名将ask1bid1
1条回答
网友
1楼 · 发布于 2024-09-29 23:30:44

可以执行以下操作以获得所需的输出:

       import pandas as pd

       df_1=pd.DataFrame({'date':['2011-01-03','2011-01-03','2011-01-03'],'ask':[0.31,1.05,4.17],'bid':[0.40,1.41,5.11]})

       dfs=list()
       df_count=1
       while df_1['date'].duplicated().any()==True:
         df_count+=1
         b=df_1.drop_duplicates(subset='date',keep='first')
         dfs.append(b)
         df_1=df_1.merge(b,how='outer',on=['date','ask','bid'],indicator=True)
         df_1=df_1[df_1['_merge']=='left_only']
         del df_1['_merge']

      dfs.append(df_1)
      df_final = reduce(lambda left,right: pd.merge(left,right,on='date',suffixes=('_1','_2')), dfs)

输入:

      ask   bid        date
  0  0.31  0.40  2011-01-03
  1  1.05  1.41  2011-01-03
  2  4.17  5.11  2011-01-03

输出:

        ask_1  bid_1     date     ask_2   bid_2   ask   bid

     0   0.31    0.4  2011-01-03   1.05   1.41  4.17  5.11

相关问题 更多 >

    热门问题