如何删除包括部分Nan值的行,而不考虑行的特定部分?



我正在处理多个大数据框架。我希望自动删除它们的NaN部分,以简化数据清理过程。数据是从相机或雷达馈送中收集的,但我需要的部分数据是当一个特定物体进入相机/雷达的视界时。因此,数据文件(帧)如下所示,并具有许多NaN值:

total in seconds    datetime(utc)   channels    AlviraPotentialDronePlots_timestamp AlviraPotentialDronPlot_id  ...
0   1601381457  2020-09-29 12:10:57 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1   1601381459  2020-09-29 12:10:59 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2   1601381460  2020-09-29 12:11:00 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
3   1601381461  2020-09-29 12:11:01 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
4   1601381463  2020-09-29 12:11:03 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
... ... ... ... ... ... ... ... ... Useful data is here ... ... ... ... ... ... ... ... ...
623 1601382249  2020-09-29 12:24:09 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
624 1601382250  2020-09-29 12:24:10 NaN NaN NaN NaN NaN NaN NaN NaN ... 51.521264   5.858627    5.0 NaN NaN SearchRadar 0.0 0.0 NaN NaN
625 1601382251  2020-09-29 12:24:11 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

我已经删除了列与所有NaN值使用:

df = df.dropna(axis=1, how='all')

现在,我想要删除包含所有NaN的行。但是,由于total in secondsdatetime(utc)总是存在于文件中,所以我不能使用以下命令:

df = df.dropna(axis=0, how='all')

另外,我不能使用how='any',因为这也会删除部分有用的数据(有用的数据包含一些NaN值,我将在稍后填充)。我必须以一种不考虑total in secondsdatetime(utc)的方式使用dropna(),但如果所有其他字段都是nan,则删除整行。

我最接近解决这个问题的是这个链接中提到的命令,但我想我对Python不够熟悉,无法形成以下逻辑:

  • if in one row field != [is not] 'total in seconds' | [or] 'datetime(utc)' &[和]其他字段== [is] 'NaN',然后删除

我也试着用for loop来写这个,但是我没有成功。有人能帮我一下吗?

提前感谢。

您可以使用Index.difference:

检查没有total in seconds,datetime(utc)subset参数的所有列
cols = ['total in seconds','datetime(utc)']
checked = df.columns.difference(cols)
df = df.dropna(subset=checked, how='all')

如果列数不变,可以使用参数thresh。假设你有50列,如果你有2列不为空,你可以把threh设为48。更多信息,请访问https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dropna.html

最新更新