regex - 如何将列拆分为具有某些功能的多列?
问题描述
我有这样的专栏
col1
(0,0):19,(1,1):155
(0,0):13,(0,1):32,(1,1):34
(0,0):56,(1,0):43,(1,1):38
(0,0):67,(0,1):45,(1,0):98,(1,1):70
我想把它分成四列:
(0,0) (0,1) (1,0) (1,1)
19 0 0 155
13 32 0 34
56 0 43 38
67 45 98 70
我试过col.str.split(',\s*(?![^()]*\))',expand=True)
但只能得到:
col1 col2 col3 col4
(0,0):19 (1,1):155 NAN NAN
(0,0):13 (0,1):32 (1,1):34 NAN
(0,0):56 (1,0):43 (1,1):38 NAN
(0,0):67 (0,1):45 (1,0):98 (1,1):70
我想知道是否有办法得到我上面显示的内容?非常感谢!
坤
解决方案
您可以提取 , , 之后的数字,(0,0)
然后删除该列:(0,1)
(1,0)
(1,1)
col1
import pandas as pd
df = pd.DataFrame({'col1': ['(0,0):19,(1,1):155','(0,0):13,(0,1):32,(1,1):34','(0,0):56,(1,0):43,(1,1):38','(0,0):67,(0,1):45,(1,0):98,(1,1):70']})
df['(0,0)'] = df['col1'].str.extract(r'\(0,0\):(\d+)', expand=False).fillna(0)
df['(0,1)'] = df['col1'].str.extract(r'\(0,1\):(\d+)', expand=False).fillna(0)
df['(1,0)'] = df['col1'].str.extract(r'\(1,0\):(\d+)', expand=False).fillna(0)
df['(1,1)'] = df['col1'].str.extract(r'\(1,1\):(\d+)', expand=False).fillna(0)
df = df.drop(columns = ['col1'])
输出:
>>> df
(0,0) (0,1) (1,0) (1,1)
0 19 0 0 155
1 13 32 0 34
2 56 0 43 38
3 67 45 98 70
推荐阅读
- c++ - 无限循环的编译器优化
- sql - 如何使用sql创建从ic(身份证)获取年龄的函数
- r - 在使用 group_by、quantile 和其他函数时创建新列需要很长时间并且没有给出预期的结果
- android - QT android + 远程调试
- javascript - 如何在javascript中进行正确的错误处理?
- php - 如何在 php:5.6-fpm-alpine docker 容器中启用 Memcache
- reactjs - React setState 不重新渲染组件
- entity-framework - 将模型添加到实体
- vue.js - VueJS组件不刷新Axios GET请求虽然有一个关键
- javascript - CSS:我们如何在滑块中做幻灯片动画?