Python: 展开包含字典的列
Python: explode column that contains dictionary
我有一个如下所示的 DataFrame:
df
:
amount info
12 {id:'1231232', type:'trade', amount:12}
14 {id:'4124124', info:{operation_type:'deposit'}}
我想达到的效果是这样的:
df
:
amount type operation_type
12 trade Nan
14 Nan deposit
我试过 df.explode('info')
方法,但没有成功。还有其他方法吗?
我们可以分两步完成:(i) 使用 data
构建 DataFrame df
; (ii) 在“信息”列上使用 json_normalize
,然后 join
返回 df
:
df = pd.DataFrame(data)
out = df.join(pd.json_normalize(df['info'].tolist())[['type', 'info.operation_type']]).drop(columns='info')
out.columns = out.columns.map(lambda x: x.split('.')[-1])
输出:
amount type operation_type
0 12 trade NaN
1 14 NaN deposit
我有一个如下所示的 DataFrame:
df
:
amount info
12 {id:'1231232', type:'trade', amount:12}
14 {id:'4124124', info:{operation_type:'deposit'}}
我想达到的效果是这样的:
df
:
amount type operation_type
12 trade Nan
14 Nan deposit
我试过 df.explode('info')
方法,但没有成功。还有其他方法吗?
我们可以分两步完成:(i) 使用 data
构建 DataFrame df
; (ii) 在“信息”列上使用 json_normalize
,然后 join
返回 df
:
df = pd.DataFrame(data)
out = df.join(pd.json_normalize(df['info'].tolist())[['type', 'info.operation_type']]).drop(columns='info')
out.columns = out.columns.map(lambda x: x.split('.')[-1])
输出:
amount type operation_type
0 12 trade NaN
1 14 NaN deposit