Jav*_*más 1 python json concat pandas
我有以下数据框:
df = pd.DataFrame({'id':['0001', '0001'],
'vat_countries': [{'vat': 21, 'country': 'ES'},
{'vat': 23, 'country': 'GR'}]
})
id vat_countries
0001 {'vat': 21, 'country': 'ES'}
0001 {'vat': 23, 'country': 'GR'}
Run Code Online (Sandbox Code Playgroud)
我想得到的是:
id vat country
0001 21 'ES'
0001 23 'GR'
Run Code Online (Sandbox Code Playgroud)
阅读其他 SO 问题我得到以下代码:
df = df.drop('vat_countries', 1).assign(**pd.DataFrame(list_df['vat_countries'].values.tolist()))
Run Code Online (Sandbox Code Playgroud)
然而,这给了我:
id vat country
0001 21 'ES'
0001 21 'ES'
Run Code Online (Sandbox Code Playgroud)
这是错误的。
我已经能够得到我想要使用的结果:
c = pd.concat([pd.DataFrame(df[column].values.tolist()),
df.drop(column, 1).reset_index()],
axis=1, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
但这需要手动键入列名。否则,列名是 0, 1, 2, 3 ...
有什么方法可以在保留列名称的同时获得所需的输出?谢谢
尝试pop修复您的代码
df.join(pd.DataFrame(df.pop('vat_countries').tolist(),index=df.index))
Out[300]:
id vat country
0 0001 21 ES
1 0001 23 GR
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |