在特定列 (pandas) 中首次出现 NaN 后删除所有行

drop all rows after first occurance of NaN in specific column (pandas)

我正在尝试使用 pandas 中的 dropna 函数。我想将它用于特定的列。

如果所有行都具有所有 NaN 值,我只能弄清楚如何使用它来删除 NaN。

我有一个数据框(见下文),我想在 specific 列中第一次出现 NaN 后删除所有行,列 "A"

当前代码,仅当所有行值为 NaN 时才有效。

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

原始数据框

    data = pd.DataFrame({"A": (1,2,3,4,5,6,7,"NaN","NaN","NaN"),"B": (1,2,3,4,5,6,7,"NaN","9","10"),"C": range(10)})
    data


    A   B   C
0   1   1   0
1   2   2   1
2   3   3   2
3   4   4   3
4   5   5   4
5   6   6   5
6   7   7   6
7   NaN NaN 7
8   NaN 9   8
9   NaN 10  9

我希望输出看起来像什么:

    A   B   C
0   1   1   0
1   2   2   1
2   3   3   2
3   4   4   3
4   5   5   4
5   6   6   5
6   7   7   6

感谢您对此提供任何帮助。 显然,我想以最干净、最有效的方式进行。

谢谢!

使用 iloc + argmax

data.iloc[:data.A.isnull().values.argmax()]

     A  B  C
0  1.0  1  0
1  2.0  2  1
2  3.0  3  2
3  4.0  4  3
4  5.0  5  4
5  6.0  6  5
6  7.0  7  6

或使用不同的语法

top_data = data[:data['A'].isnull().argmax()]