如何从数据帧中的行中删除特定值?

2024-04-26 04:51:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

   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
.
.
.

Tags: 数据nancolumn1column2column3
3条回答

运行:

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

只需对每列应用一个函数,该函数将在该列中删除NaN值。 由于存在NaN值,列通常为浮动类型, 但我试图将它们转换为int

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

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

6  NaN   NaN   999

到初始的6行,这样现在列3包含3非Nan值, 而其他列-仅2

雅图yatu的解决方案会删除最后一行,而Quang的解决方案则会删除最后一行 导致ValueError:数组的长度必须相同

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

我们可以在链接的帖子中使用^{}

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

您只需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

相关问题 更多 >