Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在方法链中组合索引列?_Python_Pandas_Dataframe_Multi Index - Fatal编程技术网

Python 如何在方法链中组合索引列?

Python 如何在方法链中组合索引列?,python,pandas,dataframe,multi-index,Python,Pandas,Dataframe,Multi Index,我正在使用多索引数据帧。我的目标是将两个索引列合并为一个,而不必中断方法链 例如: A具有以下数据帧: In[1]: df Out[1]: value year type color 2018 A red -0.236022 blue -1.030577 B red 1.197374 blue -0.496247 2019 A red -0.0669

我正在使用多索引数据帧。我的目标是将两个索引列合并为一个,而不必中断方法链

例如:

A具有以下数据帧:

In[1]: df
Out[1]: 
                    value
year type color          
2018 A    red   -0.236022
          blue  -1.030577
     B    red    1.197374
          blue  -0.496247
2019 A    red   -0.066938
          blue   0.087585
     B    red   -1.702598
          blue   0.085282
现在,我想在此数据帧上执行一系列方法。在这些方法的中间,我想把两个索引列合并成一个。例如,我执行一个查询(type==a),然后组合两个索引列(year和color),然后乘以(4)。所有这些都不会从链条上断裂:

df2 = df \
  .query('type=="A"') \
  .reset_index('type', drop=True) \
  .combine_indexes(["year", "type"]) \ # <- this is what I'm missing
  .multiply(4)
在本例中,我创建了“combine_index”方法。有人知道有没有类似的东西吗?我知道如何组合两个索引列,但前提是我从链中分离出来。我需要一些与链接兼容的东西


感谢关于如何加入索引级别的问题,让我们试试
index.map

tmp = df.query('type == "A"').droplevel('type')
# The money line:
tmp.index = tmp.index.map('{0[0]}-{0[1]}'.format)                                                                                              
tmp.index.name = 'year-color'                                                                                                                  

tmp                                                                                                                                            

               value
year-color          
2018-red   -0.236022
2018-blue  -1.030577
2019-red   -0.066938
2019-blue   0.087585

关于如何加入索引级别的问题,让我们试试
index.map

tmp = df.query('type == "A"').droplevel('type')
# The money line:
tmp.index = tmp.index.map('{0[0]}-{0[1]}'.format)                                                                                              
tmp.index.name = 'year-color'                                                                                                                  

tmp                                                                                                                                            

               value
year-color          
2018-red   -0.236022
2018-blue  -1.030577
2019-red   -0.066938
2019-blue   0.087585

在不中断链的情况下,我将移动
set\u index
last:

(df.query('type=="A"')
   .reset_index('type',drop=True)
   .mul(4)
   .assign(year_color=lambda x: [f'{a}-{b}' for a,b in x.index])
   .set_index('year_color')
)
输出(原始值为
np.arange(8)


在不中断链的情况下,我将移动
set\u index
last:

(df.query('type=="A"')
   .reset_index('type',drop=True)
   .mul(4)
   .assign(year_color=lambda x: [f'{a}-{b}' for a,b in x.index])
   .set_index('year_color')
)
输出(原始值为
np.arange(8)


谢谢你的回答。但正如我在问题中所指出的,我正在寻找一种数据帧上的方法,这样它就可以成为方法链的一部分。我感谢您的回答。但正如我在问题中指出的,我正在寻找一个数据帧上的方法,这样它就可以成为方法链的一部分。