3 回答
TA贡献1799条经验 获得超8个赞
尝试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
TA贡献1831条经验 获得超9个赞
您可以使用以下方法访问各个值string methods:
df["vat"] = df.vat_countries.str["vat"]
df["country"] = df.vat_countries.str["country"]
df
id vat_countries vat country
0 0001 {'vat': 21, 'country': 'ES'} 21 ES
1 0001 {'vat': 23, 'country': 'GR'} 23 GR
TA贡献1895条经验 获得超3个赞
我会pd.Series在带有 s 的列中应用dict,并join用原始结果,即:
import pandas as pd
df = pd.DataFrame({'id':['0001', '0001'], 'vat_countries': [{'vat': 21, 'country': 'ES'}, {'vat': 23, 'country': 'GR'}]})
final_df = df.join(df.vat_countries.apply(pd.Series))
print(final_df)
输出:
id vat_countries vat country
0 0001 {'vat': 21, 'country': 'ES'} 21 ES
1 0001 {'vat': 23, 'country': 'GR'} 23 GR
正如您所看到的,vat_countires 被留下,如果您想放弃它,您可以简单地删除drop它。
添加回答
举报