简体   繁体   English

pandas 对部分多索引 dataframe 的操作

[英]pandas operations on part of multiindex dataframe

Any help to solve the following problem would be appreciated.任何帮助解决以下问题将不胜感激。

I have the following df1:我有以下df1:

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

df2: df2:

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

I do the following code:我执行以下代码:

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

output: output:

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

output desired output 需要

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

You can use double [] for DataFrame with MultiIndex :您可以将 double []用于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

Use sub on the entire df1 instead of just a slice from the MultiIndex:在整个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

Note: I used @MaxU's great read_clipboard_mi() to import OP's MultiIndex data frames by copy/paste.注意:我使用@MaxU 的强大read_clipboard_mi()通过复制/粘贴来导入 OP 的 MultiIndex 数据帧。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM