'create new column with values with np.where function in python

Hi I'm collecting data from 3 different input files and combining in to one and I like to check the compliant of 3 different columns(all these column values should contains same value to be compliant). based on the check I will create a new column which indicates the status of the compliance check (see below desired output)

df_serial_compliance = pd.DataFrame({"Serial Number Compliance":[]})
df_data = {"Serial Number 1":["", "F5349H2", "FX626H2", "H1JFZF2", "5TBBMH2", "4DN7PH2"] , "Serial Number 2":["DVMYNH2", "F5349H2", "", "5TBBMH2","5TBBMH2", "4DN7PH2"], "Serial Number 3":["5TBBMH2", "F5349H2", "FX626H2", "5TBBMH2","", "4DN7PH2"]}
df_serial = pd.DataFrame(df_data, columns=["Serial Number 1", "Serial Number 2","Serial Number 3"])

print(df_serial)

df_serial["Serial Number Compliance"] = np.where((df_serial["Serial Number 1"] == df_serial["Serial Number 2"]) & (df_serial["Serial Number 1"] == df_serial["Serial Number 3"]) ,"YES","NO")
print(df_serial)

the out put is :

  Serial Number 1 Serial Number 2 Serial Number 3
0                         DVMYNH2         5TBBMH2
1         F5349H2         F5349H2         F5349H2
2         FX626H2                         FX626H2
3         H1JFZF2         5TBBMH2         5TBBMH2
4         5TBBMH2         5TBBMH2                
5         4DN7PH2         4DN7PH2         4DN7PH2
  Serial Number 1 Serial Number 2 Serial Number 3 Serial Number Compliance
0                         DVMYNH2         5TBBMH2                       NO
1         F5349H2         F5349H2         F5349H2                      YES
2         FX626H2                         FX626H2                       NO
3         H1JFZF2         5TBBMH2         5TBBMH2                       NO
4         5TBBMH2         5TBBMH2                                       NO
5         4DN7PH2         4DN7PH2         4DN7PH2                      YES

The desired output is:

  Serial Number 1 Serial Number 2 Serial Number 3
0                         DVMYNH2         5TBBMH2
1         F5349H2         F5349H2         F5349H2
2         FX626H2                         FX626H2
3         H1JFZF2         5TBBMH2         5TBBMH2
4         5TBBMH2         5TBBMH2                
5         4DN7PH2         
  Serial Number 1 Serial Number 2 Serial Number 3 Serial Number Compliance
0                         DVMYNH2         5TBBMH2                       S1 is null
1         F5349H2         F5349H2         F5349H2                      YES
2         FX626H2                         FX626H2                       S2 is null
3         H1JFZF2         5TBBMH2         5TBBMH2                       NO
4         5TBBMH2         5TBBMH2                                       S3 is null
5         4DN7PH2                                                       NO

Edited: if more than one column have null value the result should be "NO can you help/advice how can I achieve this, please ? many thanks in advance



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source