跳过pandas数据帧行中的nan和shift元素

时间:2018-04-12 11:52:16

标签: python pandas dataframe

我有一个像这样的数据框[![Dataframe看起来像这样] [1]:https://i.stack.imgur.com/R7GmM.png 现在我想跳过nan,所以数据向左移动,即[![格式化的数据框应该是这样的] [1]:https://i.stack.imgur.com/yGYIy.png

我无法通过熊猫这样做。如果我有一个可以说100k行的大型数据集,那么可扩展的解决方案是否可行呢?

[编辑] :这是数据和所需的输出:

#Original df
>>> df
   A    B    C    D
0  a  NaN    c  NaN
1  b  NaN    b    a
2  c  NaN  NaN    d
3  d    a    b    c

#Desired output:

   A  B  C  D
0  a  c      
1  b  b  a   
2  c  d      
3  d  a  b  c

1 个答案:

答案 0 :(得分:1)

这是一种方法:

从名为df的数据框开始:

   A    B    C    D
0  a  NaN    c  NaN
1  b  NaN    b    a
2  c  NaN  NaN    d
3  d    a    b    c

应用这些行:

shifted_df = df.apply(lambda x: pd.Series(x.dropna().values), axis=1).fillna('')
shifted_df.columns = df.columns

您获得了shifted_df数据框:

>>> shifted_df
   A  B  C  D
0  a  c      
1  b  b  a   
2  c  d      
3  d  a  b  c