1) 一种构造列的方法
In [916]: df.reindex(columns=sum([[c, 'X'] for c in df.columns], [])[:-1], fill_value=0)
Out[916]:
A X B X C
0 a 0 d 0 e
1 b 0 NaN 0 a
2 c 0 c 0 f
3 d 0 f 0 g
In [917]: sum([[c, 'X'] for c in df.columns], [])[:-1]
Out[917]: ['A', 'X', 'B', 'X', 'C']
2)另一种构造方式
In [924]: def mixcols(cols):
...: ncols = ['X'] * 2 * len(cols)
...: ncols[0::2] = cols
...: return ncols[:-1]
In [925]: mixcols(df.columns)
Out[925]: ['A', 'X', 'B', 'X', 'C']
In [926]: df.reindex(columns=mixcols(df.columns), fill_value=0)
Out[926]:
A X B X C
0 a 0 d 0 e
1 b 0 NaN 0 a
2 c 0 c 0 f
3 d 0 f 0 g
3)灵感来自@piR
In [944]: [c for cx in zip(df.columns, ['X']*len(df.columns)*2) for c in cx][:-1]
Out[944]: ['A', 'X', 'B', 'X', 'C']
还有,
In [939]: from itertools import chain, izip
In [940]: list(chain.from_iterable(izip(df.columns, ['X']*len(df.columns)*2)))[:-1]
Out[940]: ['A', 'X', 'B', 'X', 'C']
4)不推荐的方式
In [935]: '-|-X-|-'.join(df.columns).split('-|-')
Out[935]: ['A', 'X', 'B', 'X', 'C']