我有以下数据框,我想将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中逐行?
答案 0 :(得分: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