Reputation: 107
I want to have a dataset from my starting dataset which is as follows::
time details bis as go
01:20 {'direction': 'nord', abc {'a':12,'b':20 } yes
'label': 'one',
'media': 'yes'}
01:25 {'direction': 'est', def {'a':2,'b':15 } no
'label': 'one',
'media': 'no'}
desired result :
time direction label media bis a b go
01:20 nord one yes abc 12 20 yes
01:25 est one no def 2 15 no
Upvotes: 0
Views: 35
Reputation: 30920
Use pd.DataFrame + pd.concat:
df1=pd.DataFrame(df['details'].tolist())
df2=pd.DataFrame(df['as'].tolist())
new_df=pd.concat([df[['time','bis','go']],df1,df2],axis=1)
print(new_df)
time bis go direction label media a b
0 01:20 abc yes nord one yes 12 20
1 01:25 def no est one no 2 15
Upvotes: 1
Reputation: 61910
Use pd.concat:
result = pd.concat([df[['time', 'bis', 'go']],
pd.DataFrame.from_records(df.details),
pd.DataFrame.from_records(df['as'])], axis=1)
print(result)
Output
time bis go direction label media a b
0 01:20 abc yes nord one yes 12 20
1 01:25 def no est one no 2 15
You could reorder the columns like this:
result = result[['time', 'direction', 'label', 'media', 'bis', 'a', 'b', 'go']]
Upvotes: 1