如何从熊猫数据框中的一行中删除特定值?

时间:2020-04-07 17:48:42

标签: python pandas

我有一个熊猫数据框,看起来像这样:

   Column1 Column2 Column3
 0   1  NaN  NaN
 1   4  NaN  NaN
 2  NaN  3   NaN
 3  NaN  98  NaN
 4  NaN NaN  562
 5  NaN NaN  742
 .
 .
 .

我将如何删除所有不必要的NaN,并使它看起来像这样

   Column1 Column2 Column3
0    1   3   562
1    4   98  742
.
.
.

3 个答案:

答案 0 :(得分:2)

运行:

df.apply(lambda col: col.dropna().reset_index(drop=True).astype(int))

仅将一个函数应用于每个列,该函数会在该列中删除 NaN 值。 由于存在 NaN 值列,因此通常为 float 类型, 但我尝试将它们强制转换为 int

还请注意,其他解决方案仅在每列包含 相同数量的非NaN值。

要进行检查,请添加以下行:

6  NaN   NaN   999

到您的6个初始行,所以现在 Column3 包含 3 个非Nan值, 而其他列-仅 2

yatu

Solution删除了最后一行,而 Quang

解决方案 导致 ValueError:数组的长度必须相同

但是在这种情况下,我的解决方案也可以正常工作,只剩下结尾的 NaN 在“太短”列中。

答案 1 :(得分:1)

您可以dropna

df.apply(lambda x: x.dropna().values)

输出:

   Column1  Column2  Column3
0      1.0      3.0    562.0
1      4.0     98.0    742.0

答案 2 :(得分:1)

我们可以在链接的帖子中使用justify

pd.DataFrame(justify(df.values, invalid_val=np.nan, side='up', axis=0), 
             columns=df.columns).dropna()

  Row1  Row2   Row3
0   1.0   3.0  562.0
1   4.0  98.0  742.0