Sca
Sca

Reputation: 195

How to split a column twice using Pandas?

I have a column {'duration': 0, 'is_incoming': False} I want to fetch 0 and Falseout 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

Answers (2)

Anurag Dabas
Anurag Dabas

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

SeaBean
SeaBean

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

Related Questions