0

我有以下数据框,我想将第 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  |

有没有办法在熊猫中做到这一点,或者我必须在纯python中逐行进行?

4

1 回答 1

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  
于 2013-05-18T09:34:16.673 回答