Search code examples
pythonpandasdataframeseries

convert a dataframe column of comma separted value to string with different format


I hava a pandas dataframe column with string

parameters

param1,param2
param1,param2,param3
param1,param2,param3,param4

I want the column to be converted to string like

parameters

[{"param" : "param1"}, {"param" : "param2"}]
[{"param" : "param1"}, {"param" : "param2"},{"param" : "param3"}]
[{"param" : "param1"}, {"param" : "param2"},{"param" : "param3"}, {"param": "param4"]

I could achieve this using comprehension for single sample value but not sure how to apply it to entire series

a = df2.sample().to_dict()
ss = {k:list(a[k].values())[0] for k in a}

# print(ss["parameters"])
pl = ss["parameters"].split(",")[:-1]
# print(pl)
ss["templateParameters"] = [{"param": each} for each in pl]

Solution

  • Alternative solution:

    df = pd.DataFrame({"parameters": [np.nan, "param1,param2", "param1,param2,param3", "param1,param2,param3,param4"]})
    
    (
        df["parameters"].fillna('').str.split(",")
        .apply(lambda x: [{"param": i} for i in x] if x[0] else None)
    )
    
    -------------------------------------------------------
    0    None
    1    [{'param': 'param1'}, {'param': 'param2'}]
    2    [{'param': 'param1'}, {'param': 'param2'}, {'p...
    3    [{'param': 'param1'}, {'param': 'param2'}, {'p...
    Name: parameters, dtype: object
    -------------------------------------------------------