Stripna:熊猫 dropna,但行为像 strip

问题描述 投票:0回答:1

表或 DataFrame 中存在前导和尾随

NaN
值是很常见的情况。在连接之后和时间序列数据中尤其如此。

import numpy as np
import pandas as pd

df1 = pd.DataFrame({
    'a': [1, 2, 3, 4, 5, 6],
    'b': [np.NaN, 2, np.NaN, 4, 5, np.NaN],
})

Out[0]:
    a   b
0   1   NaN
1   2   2.0
2   3   NaN
3   4   4.0
4   5   5.0
5   6   NaN

让我们用

dropna
删除它们。

df1.dropna()

Out[1]:
    a   b
1   2   2.0
3   4   4.0
4   5   5.0

哦不!!我们丢失了第

b
列中显示的所有缺失值。我想保留中间(内部)的。

如何以快速、干净且高效的方式去除具有前导和尾随

NaN
值的行? 结果应如下所示:

df1.stripna() 
# obviously I'm not asking you to create a new pandas method...
# I just thought it was a good name.

Out[3]:
    a   b
1   2   2.0
2   3   NaN
3   4   4.0
4   5   5.0
python pandas dataframe nan
1个回答
0
投票

您可以

bfill
/
ffill
+
isna
布尔索引构建掩码:

out = df1.loc[df1['b'].ffill().notna()&df1['b'].bfill().notna()]

输出:

   a    b
1  2  2.0
2  3  NaN
3  4  4.0
4  5  5.0
© www.soinside.com 2019 - 2024. All rights reserved.