I have this dataframe where I am trying to combine Email_x
and Email_y
to be a column email
.
- If both are
NaN
then the result should be""
ornp.nan
. Email_y
has a value andEmail_x
does not then useEmail_y
as the result(vice versa).- If both have values then take the first one only.
Email_x Email_y Verification status_x Verification status_y
489 [email protected] NaN valid valid
975 [email protected] NaN accept_all NaN
1192 NaN NaN NaN NaN
1370 [email protected] NaN unknown NaN
2001 NaN NaN NaN NaN
2565 [email protected] [email protected] valid NaN
3900 NaN NaN NaN NaN
3998 NaN NaN NaN NaN
4192 NaN NaN NaN NaN
4757 NaN [email protected] NaN NaN
I have tried using this but it fails when both have a value and results in both the values being combined.
df["email"] = df[["Email_x", "Email_y"]].fillna("").agg(" ".join, axis=1)
Result:
Email_x Email_y Verification status_x Verification status_y email
489 [email protected] NaN valid valid [email protected]
975 [email protected] NaN accept_all NaN [email protected]
1192 NaN NaN NaN NaN
1370 [email protected] NaN unknown NaN [email protected]
2001 NaN NaN NaN NaN
2565 [email protected] [email protected] valid NaN [email protected] [email protected]
3900 NaN NaN NaN NaN
3998 NaN NaN NaN NaN
4192 NaN NaN NaN NaN
4757 NaN [email protected] NaN NaN [email protected]
Expected result:
Email_x Email_y Verification status_x Verification status_y email
489 [email protected] NaN valid valid [email protected]
975 [email protected] NaN accept_all NaN [email protected]
1192 NaN NaN NaN NaN
1370 [email protected] NaN unknown NaN [email protected]
2001 NaN NaN NaN NaN
2565 [email protected] [email protected] valid NaN [email protected]
3900 NaN NaN NaN NaN
3998 NaN NaN NaN NaN
4192 NaN NaN NaN NaN
4757 NaN [email protected] NaN NaN [email protected]
Sample dictionary:
import numpy as np
a = {
"Email_x": {
489: "[email protected]",
975: "[email protected]",
1192: np.nan,
1370: "[email protected]",
2001: np.nan,
2565: "[email protected]",
3900: np.nan,
3998: np.nan,
4192: np.nan,
4757: np.nan,
},
"Email_y": {
489: np.nan,
975: np.nan,
1192: np.nan,
1370: np.nan,
2001: np.nan,
2565: "[email protected]",
3900: np.nan,
3998: np.nan,
4192: np.nan,
4757: "[email protected]",
},
"Verification status_x": {
489: "valid",
975: "accept_all",
1192: np.nan,
1370: "unknown",
2001: np.nan,
2565: "valid",
3900: np.nan,
3998: np.nan,
4192: np.nan,
4757: np.nan,
},
"Verification status_y": {
489: "valid",
975: np.nan,
1192: np.nan,
1370: np.nan,
2001: np.nan,
2565: np.nan,
3900: np.nan,
3998: np.nan,
4192: np.nan,
4757: np.nan,
},
}