1. <legend id='myj9i'><style id='myj9i'><dir id='myj9i'><q id='myj9i'></q></dir></style></legend>

      1. <small id='myj9i'></small><noframes id='myj9i'>

          <bdo id='myj9i'></bdo><ul id='myj9i'></ul>

        <i id='myj9i'><tr id='myj9i'><dt id='myj9i'><q id='myj9i'><span id='myj9i'><b id='myj9i'><form id='myj9i'><ins id='myj9i'></ins><ul id='myj9i'></ul><sub id='myj9i'></sub></form><legend id='myj9i'></legend><bdo id='myj9i'><pre id='myj9i'><center id='myj9i'></center></pre></bdo></b><th id='myj9i'></th></span></q></dt></tr></i><div id='myj9i'><tfoot id='myj9i'></tfoot><dl id='myj9i'><fieldset id='myj9i'></fieldset></dl></div>
      2. <tfoot id='myj9i'></tfoot>

        pandas :将行取消堆叠到新列中

        pandas: unstack rows into new columns( pandas :将行取消堆叠到新列中)
          <tbody id='W1iAI'></tbody>

        <tfoot id='W1iAI'></tfoot>
          <bdo id='W1iAI'></bdo><ul id='W1iAI'></ul>
        • <legend id='W1iAI'><style id='W1iAI'><dir id='W1iAI'><q id='W1iAI'></q></dir></style></legend>

                <i id='W1iAI'><tr id='W1iAI'><dt id='W1iAI'><q id='W1iAI'><span id='W1iAI'><b id='W1iAI'><form id='W1iAI'><ins id='W1iAI'></ins><ul id='W1iAI'></ul><sub id='W1iAI'></sub></form><legend id='W1iAI'></legend><bdo id='W1iAI'><pre id='W1iAI'><center id='W1iAI'></center></pre></bdo></b><th id='W1iAI'></th></span></q></dt></tr></i><div id='W1iAI'><tfoot id='W1iAI'></tfoot><dl id='W1iAI'><fieldset id='W1iAI'></fieldset></dl></div>
                • <small id='W1iAI'></small><noframes id='W1iAI'>

                  本文介绍了 pandas :将行取消堆叠到新列中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有一个看起来像这样的 df:

                  i have a df that looks like this:

                       a        date    c
                  0  ABC  2020-06-01  0.1
                  1  ABC  2020-05-01  0.2
                  2  DEF  2020-07-01  0.3
                  3  DEF  2020-01-01  0.4
                  4  DEF  2020-02-01  0.5
                  5  DEF  2020-07-01  0.6
                  

                  我想取消堆叠";列'a'所以我的新df看起来像这样

                  i would like to "unstack" column 'a' so my new df looks like this

                       a       date1   c1        date2   c2        date3   c3        date4   c4
                  0  ABC  2020-06-01  0.1   2020-05-01  0.2          nan  nan          nan  nan
                  1  DEF  2020-07-01  0.3   2020-01-01  0.4   2020-02-01  0.5   2020-07-01  0.6
                  

                  我该怎么做?

                  推荐答案

                  使用 GroupBy.cumcount 用于 MultiIndex 的辅助计数器并通过 DataFrame.unstack,然后为了正确的顺序使用 DataFrame.sort_indexmap 用于展平 MultiIndex:

                  Use GroupBy.cumcount for helper counter for MultiIndex and reshape by DataFrame.unstack, then for correct order is used DataFrame.sort_index with map for flatten MultiIndex:

                  df = (df.set_index(['a',df.groupby('a').cumcount().add(1)])
                          .unstack()
                          .sort_index(axis=1, level=[1, 0], ascending=[True, False]))
                  df.columns = df.columns.map(lambda x: f'{x[0]}{x[1]}')
                  df = df.reset_index()
                  print (df)
                       a       date1   c1       date2   c2       date3   c3       date4   c4
                  0  ABC  2020-06-01  0.1  2020-05-01  0.2         NaN  NaN         NaN  NaN
                  1  DEF  2020-07-01  0.3  2020-01-01  0.4  2020-02-01  0.5  2020-07-01  0.6
                  

                  或者如果由于不同的列名称而无法进行排序,一种想法是使用 DataFrame.reindex:

                  Or if sorting is not possible because different columns names one idea is use DataFrame.reindex:

                  df1 = df.set_index(['a',df.groupby('a').cumcount().add(1)])
                  mux = pd.MultiIndex.from_product([df1.index.levels[1], ['date','c']])
                  df = df1.unstack().swaplevel(1,0, axis=1).reindex(mux, axis=1)
                  df.columns = df.columns.map(lambda x: f'{x[1]}{x[0]}')
                  df = df.reset_index()
                  print (df)
                       a       date1   c1       date2   c2       date3   c3       date4   c4
                  0  ABC  2020-06-01  0.1  2020-05-01  0.2         NaN  NaN         NaN  NaN
                  1  DEF  2020-07-01  0.3  2020-01-01  0.4  2020-02-01  0.5  2020-07-01  0.6
                  

                  这篇关于 pandas :将行取消堆叠到新列中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  groupby multiple coords along a single dimension in xarray(在xarray中按单个维度的多个坐标分组)
                  Group by and Sum in Pandas without losing columns(Pandas中的GROUP BY AND SUM不丢失列)
                  Is there a way of group by month in Pandas starting at specific day number?( pandas 有从特定日期开始的按月分组的方式吗?)
                  Group by + New Column + Grab value former row based on conditionals(GROUP BY+新列+基于条件的前一行抓取值)
                  Groupby and interpolate in Pandas(PANDA中的Groupby算法和插值算法)
                  Pandas - Group Rows based on a column and replace NaN with non-null values(PANAS-基于列对行进行分组,并将NaN替换为非空值)
                • <legend id='dmlda'><style id='dmlda'><dir id='dmlda'><q id='dmlda'></q></dir></style></legend>
                • <tfoot id='dmlda'></tfoot>

                      1. <small id='dmlda'></small><noframes id='dmlda'>

                        <i id='dmlda'><tr id='dmlda'><dt id='dmlda'><q id='dmlda'><span id='dmlda'><b id='dmlda'><form id='dmlda'><ins id='dmlda'></ins><ul id='dmlda'></ul><sub id='dmlda'></sub></form><legend id='dmlda'></legend><bdo id='dmlda'><pre id='dmlda'><center id='dmlda'></center></pre></bdo></b><th id='dmlda'></th></span></q></dt></tr></i><div id='dmlda'><tfoot id='dmlda'></tfoot><dl id='dmlda'><fieldset id='dmlda'></fieldset></dl></div>
                          <tbody id='dmlda'></tbody>
                          <bdo id='dmlda'></bdo><ul id='dmlda'></ul>