【问题标题】:unknown number of columns into one未知数量的列合二为一
【发布时间】:2021-07-11 02:30:32
【问题描述】:

我的数据框包含未知数量的列,如下所示。

  Start               End           0          1        2      3      4     5      6 ...
 7/5/2021 22:04    7/6/2021 6:26    E1234    H5511     T3333  H2222 
 7/5/2021 16:35    7/5/2021 16:35   T3456    (Tafresh)              
 7/5/2021 19:44                     T6789    E1111      

我需要将除“开始”和“结束”列之外的所有列转换为一列

结果如下

  Start               End           0    
 7/5/2021 22:04    7/6/2021 6:26    E1234
 7/5/2021 22:04    7/6/2021 6:26    H5511
 7/5/2021 22:04    7/6/2021 6:26    T3333
 7/5/2021 22:04    7/6/2021 6:26    H2222
 7/5/2021 16:35    7/5/2021 16:35   T3456
 7/5/2021 16:35    7/5/2021 16:35   (Tafresh)           
 7/5/2021 19:44                     T6789      
 7/5/2021 19:44                     E1111

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    让我们试试set_index + droplevel + stack:

    new_df = df.set_index(['Start', 'End']).stack().droplevel(2).reset_index()
    

    stack 在此处优先于 melt,因为它将丢弃 nan 值,并且相对于预期输出的顺序将是正确的。

    new_df

                Start             End          0
    0  7/5/2021 22:04   7/6/2021 6:26      E1234
    1  7/5/2021 22:04   7/6/2021 6:26      H5511
    2  7/5/2021 22:04   7/6/2021 6:26      T3333
    3  7/5/2021 22:04   7/6/2021 6:26      H2222
    4  7/5/2021 16:35  7/5/2021 16:35      T3456
    5  7/5/2021 16:35  7/5/2021 16:35  (Tafresh)
    6  7/5/2021 19:44             NaN      T6789
    7  7/5/2021 19:44             NaN      E1111
    

    使用的数据框:

    import pandas as pd
    from numpy import nan
    
    df = pd.DataFrame({
        'Start': ['7/5/2021 22:04', '7/5/2021 16:35', '7/5/2021 19:44'],
        'End': ['7/6/2021 6:26', '7/5/2021 16:35', nan],
        '0': ['E1234', 'T3456', 'T6789'],
        '1': ['H5511', '(Tafresh)', 'E1111'],
        '2': ['T3333', nan, nan],
        '3': ['H2222', nan, nan]
    })
    

    【讨论】:

      猜你喜欢
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 2022-01-08
      • 2021-12-07
      相关资源
      最近更新 更多