【问题标题】:Transforming data frame in python在python中转换数据框
【发布时间】:2020-10-08 15:35:42
【问题描述】:

我有以下数据集:

ID      A     B    C
1      aa     -    -
2      -      bb   -
3      -      -    cc
4      aaa    -    -

应转换为以下数据框:

ID    A
 1    aa
 2    bb
 3    cc
 4    aa

所以本质上是移动行以使其适合第一列

【问题讨论】:

  • 结果中的第四项是 'aaa' 还是只是 'aa' ?
  • df.ffill(1)吗?
  • @Subbireddydwarampudi:只是啊。这些只是虚拟条目。我唯一想要的是将所有内容移回第一列。
  • 类似于@QuangHoang 所说的df.set_index('ID').replace('-',np.nan).bfill(1).iloc[:,0].reset_index()

标签: python python-3.x pandas transform reindex


【解决方案1】:

您可以在replace nan 的符号“-”之后沿列使用bfill

df_ = df.replace('-', np.nan).bfill(1)[['ID', 'A']]
print(df_)
  ID    A
0  1   aa
1  2   bb
2  3   cc
3  4  aaa

【讨论】:

    【解决方案2】:

    您可以使用df.replace- 替换为np.nan 并将'ID' 设置为索引,然后将df.stackdf.droplevel 设置为索引

    df.replace('-',np.nan).set_index('ID').stack().droplevel(1)
    
    ID
    1     aa
    2     bb
    3     cc
    4    aaa
    dtype: object
    

    【讨论】:

      【解决方案3】:

      你可以试试这个:

      df.replace('-', np.nan, inplace=True)
      df['new'] = df[df.columns[1:]].apply(
          lambda x: ''.join(x.dropna().astype(str)),
          axis=1
      )
      df = df[['ID', 'new']]
      print(df)
      

      输出:

         ID  new
      0   1   aa
      1   2   bb
      2   3   cc
      3   4  aaa
      

      【讨论】:

        【解决方案4】:
        for i in range(len(df)):
            if df.at[i, 'A'] == '-':
                if df.at[i, 'B'] == '-':
                    df.at[i, 'A'] = df.at[i, 'C']
                else:
                    df.at[i, 'A'] = df.at[i, 'B']
        
        df.drop(['B', 'C'], axis=1, inplace = True)
        
        

        只需使用嵌套 if 语句来查找除- 之外的其他内容的列,并将该值分配给列A 中的值。

        **Output** : df
        
            ID  A
        0   1   aa
        1   2   bb
        2   3   cc
        3   4   aaa
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-02
          • 2020-12-02
          • 1970-01-01
          • 2017-02-19
          • 2018-11-20
          • 1970-01-01
          • 2022-06-16
          相关资源
          最近更新 更多