pandas - 如何在 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 值(我认为这与丢失行索引有关)。
如果有一种有效的方法可以做到这一点而无需创建额外的列并删除它们,那将不胜感激。
解决方案
因为名称和年份值似乎不在引号中,所以我无法使用字典进行解析。这只是将名称分开。也许会有所帮助。
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
推荐阅读
- gnuplot - 一个窗口中有八个图。GNU 绘图
- javascript - 当父链接为(#)时如何从第一个孩子插入第一个孩子的链接
- javascript - JavaScript ES6 到基本 JavaScript
- python - Errno 24 附加到大型 CSV 文件时打开的文件过多
- javascript - d3 强制链接未连接
- ios - Xcode 不会在模拟器上运行应用程序
- javascript - 一个框架
在某些设备的某些浏览器上失真 - javascript - react-draft-wysiwyg 从动态创建的编辑器更新编辑器状态
- android - WorkContinuation 的第二个 WorkRequest 不起作用
- c# - 扩展继承的属性 c#