Reputation: 195
I have a column {'duration': 0, 'is_incoming': False}
I want to fetch 0
and False
out of this. How do I split it using Python (Pandas)?
I tried - data["additional_data"] = data["additional_data"].apply(lambda x :",".join(x.split(":")[:-1]))
I want two columns Duration
and Incoming_Time
How do I do this?
Upvotes: 0
Views: 102
Reputation: 24314
You can try converting those string to actual dict:
from ast import literal_eval
Finally:
out=pd.DataFrame(df['additional_data'].astype(str).map(literal_eval).tolist())
Now if you print out
you will get your expected output
If needed use join()
method:
df=df.join(out)
Now if you print df
you will get your expected result
Upvotes: 2
Reputation: 23217
If your column additional_data
contains real dict / json, you can directly use the string accessor .str[]
to get the dict values by keys, as follows:
data['Duration'] = data['additional_data].str['duration']
data['Incoming_Time'] = = data['additional_data].str['is_incoming']
If your column additional_data
contains strings of dict (enclosing dict with a pair of single quotes or double quotes), you need to convert the string to dict first, by:
from ast import literal_eval
data['Duration'] = data['additional_data].map(literal_eval).str['duration']
data['Incoming_Time'] = data['additional_data].map(literal_eval).str['is_incoming']
Upvotes: 1