Python 如何按顺序添加新的空列

Python 如何按顺序添加新的空列,python,pandas,Python,Pandas,我有一个包含这些列的数据框 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 我想按顺序添加缺少的列号,如第3列和第5列,我肯定可以这样做,从而得到预期的输出 dd['3'] = 0 dd['5'] = 0 dd=dd.reindex(columns= ['a', '1','2','3','4','5','6','b'])

我有一个包含这些列的数据框

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
我想按顺序添加缺少的列号,如第3列和第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
我有数千列我无法手动添加有没有办法通过循环或其他方式添加它们请尝试以下操作:

for i in range(1, int(df.columns[-2])):
    if str(i) not in df.columns:
        df.insert(i, str(i), 0)
印刷品:

   a  1  2  3  4  5  6  b
0  1  1  1  0  1  0  1  1
根据注释,假设编号列序列从第二列开始,直到最后第二列。如果开始列和结束列之间只有一个编号列,则代码也可以工作。

让我们先过滤数字列,然后使用get_loc获取数据帧中与数字列的开始和结束位置相对应的位置,最后使用fill_value=0的reindex来相应地重新编制索引:

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”,最后一列是否始终为“b”,实际上并非如此,但数字列始终介于和之间。数字列的开头或结尾可以有其他按字母顺序排列的列。我们可以预期列名的数字顺序从第二列开始到倒数第二列,对吗?
   a  1  2  3  4  5  6  b
0  1  1  1  0  1  0  1  1