【问题标题】:Combine sparsely populated columns of the same data in pandas在 pandas 中组合相同数据的稀疏列
【发布时间】:2013-05-18 05:10:33
【问题描述】:

我有以下数据框,我想将第 2、3、4、5 列合并为一列。

|  0  |  1  |  2  |  3  |  4  |  5  |
+-----+-----+-----+-----+-----+-----+
|  90 |  90 |  A  |     |  A  |  A  |
| 101 | 101 |     |     |  T  |  T  |
| 245 | 246 |  AG |  AG |  AG |  AG |
| 302 | 302 |  C  |     |     |     |
| 324 | 324 |     |  G  |     |  G  |

每一列都包含相同类型的数据,但数据很少。当考虑所有列时,每一行都会有一个条目。所以我的目标是将这些列组合在一起。

|  0  |  1  | new |
+-----+-----+-----+
|  90 |  90 |  A  |
| 101 | 101 |  T  |
| 245 | 246 |  AG |
| 302 | 302 |  C  |
| 324 | 324 |  G  |

有没有办法在 pandas 中做到这一点,还是我必须在纯 python 中逐行执行?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    可以使用DataFrame.max(axis=1)计算列:

    import pandas as pd
    from StringIO import StringIO
    
    data = """ 90 ,  90 ,  A  ,     ,  A  ,  A 
    101 , 101 ,     ,     ,  T  ,  T 
    245 , 246 ,  AG ,  AG ,  AG ,  AG
    302 , 302 ,  C  ,     ,     ,    
    324 , 324 ,     ,  G  ,     ,  G """
    
    
    df = pd.read_csv(StringIO(data), header=None)
    s = df.ix[:, 2:].max(axis=1)
    df = df.ix[:, :1]
    df["new"] = s
    print df
    

    结果:

         0    1    new
    0   90   90    A  
    1  101  101    T  
    2  245  246    AG 
    3  302  302    C  
    4  324  324    G  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 2018-08-22
      • 1970-01-01
      • 2017-02-17
      • 1970-01-01
      • 2021-10-11
      相关资源
      最近更新 更多