Python 在pandas中组合相同数据的稀疏填充列
我有下面的数据框架,我想把第2、3、4、5列合并成一列Python 在pandas中组合相同数据的稀疏填充列,python,pandas,Python,Pandas,我有下面的数据框架,我想把第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 | | |
| 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中逐行执行吗?您可以使用
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