Ad

How To Replace Value In A Dataframe And Convert It To A List Of Dictionary In Python Pandas

- 1 answer

I have a data frame that is created after a query is executed. Call it df1.

 customerID flag
0        123   No

Now, I have another list of dictionary like below:

list2 = [{"customerID": "123", "response": "yes", "flag": ""}]  

Now, I want to replace the value of the flag with the values of the flag from df1 for that specific customer. So, I converted this list to a data frame say df2 and tried doing it but it didn't give any errors but didn't give my expected output.

Attempt:

df2.loc[df2['customerID'].isin(df1.to_dict().keys()), 'flag'] = df2['customerID'].map(df1.to_dict())  

Expected output:

[{"customerID": "123", "response": "yes", "flag": "No"}]  

I am looking to replace it in df2 itself. Later on, I can do .to_dict(orient="records") to get the format I need.

Ad

Answer

As you have a list of dictionaries, it might not be worth converting to DataFrame, performing a merge/map, etc.

Maybe just loop and mutate the object:

s = df1.set_index('customerID')['flag']

for d in list2:
    if d['customerID'] in {'123'} and d['customerID'] in s:
        d['flag'] = s[d['customerID']]

output:

[{'customerID': '123', 'response': 'yes', 'flag': 'No'}]
Ad
source: stackoverflow.com
Ad