首页 > 解决方案 > 如何在 Pandas 中提取列字典并将其替换为单列

问题描述

我有一个数据框,其中列中的每个条目info都是表单的字典{'name':name, 'year':year}。我希望能够解压这本字典并替换该列,这样每个单元格都将是name.

我试过使用json_normalize如下

df = df.read_csv('file.csv')
df.dropna(subset=['info'], inplace=True)
names = pd.json_normalize(df['name'])
df['info'] = names['name']

这很接近,但我发现它在我的最终 df 中引入了奇怪的 NaN 值(我认为这与丢失行索引有关)。

如果有一种有效的方法可以做到这一点而无需创建额外的列并删除它们,那将不胜感激。

标签: pandas

解决方案


因为名称和年份值似乎不在引号中,所以我无法使用字典进行解析。这只是将名称分开。也许会有所帮助。

data='''info
{'name':Jon, 'year':year}
{'name':Jack, 'year':year}
{'name':Joe, 'year':year}
'''
df = pd.read_csv(io.StringIO(data), sep=' \s+', engine='python')
df['name'] = df['info'].str.split("{'name':").str[1].str.split(',').str[0]

0     Jon
1    Jack
2     Joe
Name: info, dtype: object

推荐阅读