0

次のデータフレームがあり、列 2、3、4、5 を 1 つの列に結合したいと考えています。

|  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 に答える