2015-09-05 142 views
2

我有这样的数据,并使用pandas/excel/python。如何折叠多列大熊猫

A  B  C  D 
Bus  Car 
Plane 
       Car 
    Boat Car 
    Boat Car Plane 

我试图让像我这样的数据:

A  B  C  D 
Bus Car 
Plane 
Car 
Boat Car 
Boat Car Plane 

当值(串)获得取决于如果该细胞是空白的偏移了。

我看着df.max但它似乎并不满足多列,以及其他建议上How to collapse Pandas Dataframe

我不希望来连接字符串,只是转移所做的一切。

我看到一种使用“R”和融化的方法,但是如果可能的话,我想坚持使用python/pandas。

谢谢。

+0

Excel:选择全部,转到特殊...,空白,删除...,移动单元格。 – pnuts

+0

当我在'pandas'中使用'pd.read_clipboard()'来复制第一个'DataFrame'时,我立即得到了你想要的结果。我想这是因为它的默认值是解析由空格分隔的值,并且只从看到第一个值的那一刻开始分离过程。 – Pilik

回答

2

如何:

print df.apply(lambda x: pd.Series(x[~x.isnull()].values), axis=1) 
     0 1  2 
0 Bus Car NaN 
1 Plane NaN NaN 
2 Car NaN NaN 
3 Boat Car NaN 
4 Boat Car Plane 

您可以随时fillna()的用空格结果。

0

笨拙,但工作:

df.apply(lambda x: 
     pd.DataFrame([[i for i in x if i], ['' for i in x]], columns=x.index).ix[0], 
     axis=1) 

这部分pd.DataFrame([[i for i in x if i], ['' for i in x]], columns=x.index).ix[0]是需要保持原来的形状和列。