当同一行中的另一列为NaN时,如何从熊猫数据框中选择特定的列值?

时间:2019-07-24 13:45:18

标签: python pandas dataframe

我对熊猫还很陌生,我正在尝试做一个简单的操作。我正在尝试进行比较,并在满足条件时从列中选择一些值。但是我不知道如何在熊猫中给出这些条件。使用列表非常简单,但在数据框中对我来说是新的。

代码示例如下:

import pandas as pd

df = pd.DataFrame({'Student_Subjects_Initial': ['A','B','C','D'],
                    'Student_Marks_Initial': [10,23,3,45],
                    'Student_Subjects_Final': ['A',np.nan,'C','D'],
                    'Student_Marks_Final': [10,23,3,np.nan]})

这将为我提供df中的以下内容:

 Student_Subjects_Initial   Student_Marks_Initial   Student_Subjects_Final  Student_Marks_Final
0   A                           10                      A                       10.0
1   B                           23                      nan                     23.0
2   C                           3                       C                       3.0
3   D                           45                      D                       nan

我要尝试的是从Student_Subjects_Initial中选取Student_Subjects_Finalnan的值。 因此,我的输出应该只是:

Mismatches_Student_Subject_Initial:
B

但是我无法全神贯注地为熊猫数据框编写条件。

有人可以帮忙吗?预先感谢。

2 个答案:

答案 0 :(得分:0)

df[df.Student_Subjects_Final.isnull()].Student_Subjects_Initial.to_string(index=False)

或loc

df.loc[df['Student_Subjects_Final'].isnull()].Student_Subjects_Initial.to_string(index=False)

答案 1 :(得分:0)

这可以通过过滤具有所需值的行来简单地实现。

df = df[df['Student_Subjects_Final'].isnull()]
print(df.Student_Marks_Initial)