-1

我在 DataFrame 中有数百列,并且想删除多列为 NaN 的行。意思是这些列的整行都是 NaN。

我试图对列进行切片,但代码需要永远运行。

df = df.drop(df[(df.loc[:,'col1':'col100'].isna()) & (df.loc[:,'col120':'col220'].isna())].index)

感谢任何帮助。

4

2 回答 2

1

您原始问题的一部分内容如下: “......想要删除多列为 NaN 的行。这意味着对于这些列,整行都是 NaN。”

我可以将其解释为,当整行具有 NaN 时,您想删除该行。如果这是真的,您应该能够通过以下方式实现:

df.dropna(axis = 'rows', how = 'all', inplace = True)

如果不是这样,那么我误解了你的问题。

于 2020-04-28T03:48:41.907 回答
0

您应该尝试使用参数等于您尝试删除的列的dropna()函数。subset这是取自 Pandas 文档的一个简短示例

df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
                   "toy": [np.nan, 'Batmobile', 'Bullwhip'],
                   "born": [pd.NaT, pd.Timestamp("1940-04-25"),
                            pd.NaT]})

df
       name        toy       born
0    Alfred        NaN        NaT
1    Batman  Batmobile 1940-04-25
2  Catwoman   Bullwhip        NaT

df.dropna(subset=['name', 'born'])

这为您提供以下信息:

       name        toy       born
1    Batman  Batmobile 1940-04-25
于 2020-03-27T15:33:04.963 回答