I have data:
ID merk_ac1 merk_ac2 merk_ac3
1 a NA NA
2 NA b NA
3 NA a b
4 a,b NA c
I tried using combine_first() but not cover the multiple values. I want the result like:
ID merk_ac1 merk_ac2 merk_ac3 merk_ac
1 a a a
2 b b
3 a b a,b
4 a,b c a,b,c
CodePudding user response:
What about something like:
import numpy as np
import panas as pd
df['merk_ac'] = df.apply(lambda x: [element for element in x if ~np.isnan(element)],axis = 1)
assuming that in merk_ac you want a list with all the elements from the different columns of the original data frame
CodePudding user response:
You can use apply to concatenate string from multiple columns using join
import pandas as pd
a = ["a", pd.NA, pd.NA, "a,b"]
b = [pd.NA, "b", "a", pd.NA]
c = [pd.NA, pd.NA, "b", "c"]
df = pd.DataFrame({"a": a, "b": b, "c": c})
df["combined"]=df.apply(lambda row: ",".join([elem for elem in row if not pd.isna(elem)]), axis=1)
df.head()
OUTPUT:
| a | b | c | combined | |
|---|---|---|---|---|
| 0 | a | NA | NA | a |
| 1 | NA | b | NA | b |
| 2 | NA | a | b | a,b |
| 3 | a,b | NA | c | a,b,c |
