【问题标题】:pandas operations on part of multiindex dataframe对部分多索引数据框的熊猫操作
【发布时间】:2021-03-24 19:10:53
【问题描述】:

对解决以下问题的任何帮助将不胜感激。

我有以下 df1:

                    2020-12-13
user_id currency              
4       1WO       1
        ADH       23
        ALX       5
12223   AMLT      7
        ANCT      9
        ARE       1

df2:

created_at    2020-12-13
currency                
1WO         1    
ALX         1    

我执行以下代码:

df1.loc[4] = df1.loc[4].sub(df2, axis=1, level='currency', fill_value=0)

输出:

                    2020-12-13
user_id currency              
4       1WO       nan
        ADH       nan
        ALX       nan
12223   AMLT      7
        ANCT      9
        ARE       1

想要的输出

                    2020-12-13
user_id currency              
4       1WO       0
        ADH       23
        ALX       4
12223   AMLT      7
        ANCT      9
        ARE       1

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以将[]DataFrameMultiIndex 一起使用:

    print (df1.loc[[4]].sub(df2, axis=1, level='currency', fill_value=0))
                      2020-12-13
    user_id currency            
    4       1WO              0.0
            ADH             23.0
            ALX              4.0
    
    
    df1.loc[[4]] = df1.loc[[4]].sub(df2, axis=1, level='currency', fill_value=0)
    print (df1)
                      2020-12-13
    user_id currency            
    4       1WO              0.0
            ADH             23.0
            ALX              4.0
    12223   AMLT             7.0
            ANCT             9.0
            ARE              1.0
    

    【讨论】:

      【解决方案2】:

      在整个 df1 上使用 sub 而不仅仅是 MultiIndex 中的一个切片:

      df1.sub(df2, level=1, fill_value=0)
      
                        2020-12-13
      user_id currency            
      4.0     1WO              0.0
              ADH             23.0
              ALX              4.0
      12223.0 AMLT             7.0
              ANCT             9.0
              ARE              1.0
      

      注意:我使用@MaxU 的 read_clipboard_mi() 通过复制/粘贴的方式导入 OP 的 MultiIndex 数据帧。

      【讨论】:

      • 感谢您的回答,但我忘了提到不同的 user_id 中可能存在相同的货币。所以我需要指定 user_id。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 2016-06-13
      • 2017-02-22
      • 2019-05-21
      • 2019-03-18
      • 2018-01-08
      • 2017-12-14
      相关资源
      最近更新 更多