📜  pandas 获取所有具有值的行 - Python (1)

📅  最后修改于: 2023-12-03 15:03:30.744000             🧑  作者: Mango

Pandas 获取所有具有值的行 - Python

在处理数据时,我们经常需要获取有值的行来进行进一步的处理。这时,我们可以利用Pandas库提供的一些方法来轻松地获取所有具有值的行。

基于numpy数组的方法

我们可以使用numpy库提供的numpy.isnan()函数来判断是否有NaN值,然后利用numpy.any()函数来检查每行是否有至少一个非NaN值。最后,我们可以使用这个布尔数组来选取具有值的行。

import numpy as np
import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, np.nan, 4],
                   'B': [5, np.nan, np.nan, 8],
                   'C': [9, 10, 11, 12]})

# 判断每行是否有至少一个非NaN值
has_value = np.logical_not(np.isnan(df)).any(axis=1)

# 选取具有值的行
result = df[has_value]

print(result)

输出:

     A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
基于Pandas的方法

Pandas库提供了一个DataFrame.dropna()方法,可以轻松地删除具有NaN值的行。我们可以使用DataFrame.dropna(how='all')来删除所有值均为NaN的行,然后就可以得到具有值的行了。

import pandas as pd

# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, None, 4],
                   'B': [5, None, None, 8],
                   'C': [9, 10, 11, 12]})

# 删除具有NaN值的行
df.dropna(how='all', inplace=True)

print(df)

输出:

     A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
结论

无论是基于numpy数组的方法,还是基于Pandas的方法,都可以很容易地获取所有具有值的行。我们可以根据实际情况选择一种方法来使用。