首页 > 解决方案 > 如何按顺序添加新的空列

问题描述

我有这些列的数据框

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

我有数千列我无法手动完成有没有办法可以通过循环或其他方式添加它们

标签: pythonpandas

解决方案


让我们filter使用数字列get_loc获取数据框中与数字列的开始和结束位置相对应的位置,最后使用reindexwithfill_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

推荐阅读