python - 如何按顺序添加新的空列
问题描述
我有这些列的数据框
dd = pd.DataFrame({'a':[1],'1':[1],'2':[1],'4':[1],'6':[1],'b':[1]})
a 1 2 4 6 b
0 1 1 1 1 1 1
我想以顺序方式添加缺少的列号,例如 col 3 和 col 5,我肯定可以这样做,从而提供预期的输出。
dd['3'] = 0
dd['5'] = 0
dd=dd.reindex(columns= ['a', '1','2','3','4','5','6','b'])
a 1 2 3 4 5 6 b
0 1 1 1 0 1 0 1 1
我有数千列我无法手动完成有没有办法可以通过循环或其他方式添加它们
解决方案
让我们filter
使用数字列get_loc
获取数据框中与数字列的开始和结束位置相对应的位置,最后使用reindex
withfill_value=0
相应地重新索引:
c = dd.filter(regex=r'^\d+$').columns
l1, l2 = dd.columns.get_loc(c[0]), dd.columns.get_loc(c[-1])
idx = np.hstack([dd.columns[:l1], np.r_[c.astype(int).min():c.astype(int).max() + 1].astype(str), dd.columns[l2 + 1:]])
dd = dd.reindex(idx, axis=1, fill_value=0)
a 1 2 3 4 5 6 b
0 1 1 1 0 1 0 1 1
推荐阅读
- php - 表中的更改列在 postgres 中具有枚举类型
- java - 我正在 android 中创建食物菜单,并希望在不同的时间跨度内显示菜单午餐和晚餐。
- ruby-on-rails - Rails 控制台权限被拒绝@rb_sysopen 错误
- php - Laravel - 注册装饰器
- node.js - React + Express 路由问题
- javascript - 基于三元运算符显示元素
- amazon-ecs - 如何通过 ecs-cli 启用 ECS 服务发现?
- html - 使用 VBA 将带有 HTML 标记的文本呈现为 Word 表格中的格式化文本
- django - gaierror - [Errno -3] 名称解析暂时失败
- ios - 如何在 iOS 中通过 OCR 获取文本时检测粗体或特定颜色字体?