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

        <bdo id='AAPZb'></bdo><ul id='AAPZb'></ul>
    1. <tfoot id='AAPZb'></tfoot>
    2. <legend id='AAPZb'><style id='AAPZb'><dir id='AAPZb'><q id='AAPZb'></q></dir></style></legend>

      <small id='AAPZb'></small><noframes id='AAPZb'>

        在python中按多个条件合并不同数量的行和列

        merging varying number of rows and columns by multiple conditions in python(在python中按多个条件合并不同数量的行和列)

            <tbody id='3gQZk'></tbody>
          • <bdo id='3gQZk'></bdo><ul id='3gQZk'></ul>

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

            1. <small id='3gQZk'></small><noframes id='3gQZk'>

              1. <legend id='3gQZk'><style id='3gQZk'><dir id='3gQZk'><q id='3gQZk'></q></dir></style></legend>
                  本文介绍了在python中按多个条件合并不同数量的行和列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  已更新问题:为什么不合并a_datea_para_consa_menta_le。这些作为没有值的列追加,但在原始数据集中它们有值。

                  以下是数据集的外观

                           connector   type   q_text   a_text   var1   var2 
                     1        1111      1      aa       None    xx     ps
                     2        9999      2      None     tt      jjjj   pppp
                     3        1111      2      None     uu      None   oo
                     4        9999      1      bb       None    yy     Rt
                     5        9999      1      cc       None    zz     tR
                  

                  目标:数据集应该是什么样子

                           connector   q_text   a_text    var1   var1.1   var2   var2.1
                     1        1111      aa        uu       xx     None     ps      oo
                     2        9999      bb        tt       yy     jjjj     Rt      pppp
                     3        9999      cc        tt       zz     jjjj     tR      pppp
                  

                  逻辑:列type具有值12,其中多行具有值1,但只有一行(在connector中具有相同值)具有值2

                  以下是主要的合并规则

                  1. type=1的每一行与其对应的(connector)type=2行合并。

                  2. 由于type=1的多行具有相同的connector值,因此我不想只合并type=1的一行,而是合并所有行,每行都有唯一的type==2行。

                  3. 由于某些列(例如a_text)遵循左联接逻辑,因此可以在不添加额外列的情况下重写值。

                  4. 由于var2值不能通过左联接合并,因为它们相对于行连接器值是非排他性的,因此我希望为这些值(ppppjjjj)增加额外的列(var1.1var2.1)。

                  总而言之(请记住,我只提到具有相同连接器值的行):如果q_textNonei,首先,希望将a_text中的值替换为相应行(相同连接器值)的a_text值(请参见上表ttuu),其次,希望追加一些其他值(var1和<[2-19]] 此外,还有一些具有唯一connector值的行不会匹配。不过,我想保留这些行。

                  我只想删除与其对应的type=1行**合并的type=2行**(&q;)。换句话说:我不想保留类型=2的行,这些行有一个匹配项并合并到它们相应的(连接器)type=1行中。不过,我希望保留所有其他行。

                  @victor__von__doom在此处提供解决方案 merging varying number of rows by multiple conditions in python 在我最初希望保留所有"type"=2列(值)时得到回答。

                  我使用的代码:合并后的Persoq_texta_text

                  df.loc[df['type'] == 2, 'a_date'] = df['q_date']
                  df.loc[df['type'] == 2, 'a_par'] = df['par']
                  df.loc[df['type'] == 2, 'a_cons'] = df['cons']
                  df.loc[df['type'] == 2, 'a_ment'] = df['pret']
                  df.loc[df['type'] == 2, 'a_le'] = df['q_le']
                  my_cols = ['Perso', 'q_text','a_text', 'a_le', 'q_le', 'q_date', 'par', 'cons', 'pret', 'q_le', 'a_date','a_par', 'a_cons', 'a_ment', 'a_le']
                  df[my_cols] = df.sort_values(['connector','type']).groupby('connector')[my_cols].transform(lambda x: x.bfill())
                  df.dropna(subset=['a_text', 'Perso'],inplace=True)
                  df.reset_index(drop=True,inplace=True)
                  

                  data:这是核心数据集的表示形式。很遗憾,由于隐私法的原因,我无法共享实际数据。

                  这篇关于在python中按多个条件合并不同数量的行和列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

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

                  相关文档推荐

                  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替换为非空值)

                    <small id='tSdim'></small><noframes id='tSdim'>

                    1. <tfoot id='tSdim'></tfoot>
                        • <bdo id='tSdim'></bdo><ul id='tSdim'></ul>
                        • <legend id='tSdim'><style id='tSdim'><dir id='tSdim'><q id='tSdim'></q></dir></style></legend>
                          <i id='tSdim'><tr id='tSdim'><dt id='tSdim'><q id='tSdim'><span id='tSdim'><b id='tSdim'><form id='tSdim'><ins id='tSdim'></ins><ul id='tSdim'></ul><sub id='tSdim'></sub></form><legend id='tSdim'></legend><bdo id='tSdim'><pre id='tSdim'><center id='tSdim'></center></pre></bdo></b><th id='tSdim'></th></span></q></dt></tr></i><div id='tSdim'><tfoot id='tSdim'></tfoot><dl id='tSdim'><fieldset id='tSdim'></fieldset></dl></div>

                            <tbody id='tSdim'></tbody>