我有一个相对较大的数据框,其中包含一百多列。当前,只有第一列被分配了名称,数据框如下所示:
Event 0 1 2 3 4 5 6 7 8 9 10 11 ...
我想重命名这些列,以便它们看起来像
Event Name1 Job1 Name2 Job2 Name3 Job3 Name4 Job4 Name5 Job5 Name6 Job6 ...
基本上,对于偶数列,名称将变为Name(number / 2 + 1),对于奇数列,名称将变为Job((number + 1)/ 2 + 1)。
有一个类似的问题(generating column names iteratively in pandas),我按照他们的方法首先提取了奇数列,然后分配了数字,但是代码并没有真正起作用。
我想知道应该怎么做?
最佳答案
如何使用2 listcomp和zip
和from_iterable
展平zip
:
from itertools import chain
num_cols = 20
name = ['Name'+str(i) for i in range(1, num_cols)]
job = ['Job'+str(i) for i in range(1, num_cols )]
df.columns = ['Event'] + list(chain.from_iterable(zip(name, job)))
Out[1918]:
['Event',
'Name1',
'Job1',
'Name2',
'Job2',
'Name3',
'Job3',
'Name4',
'Job4',
'Name5',
'Job5',
'Name6',
'Job6',
'Name7',
'Job7',
'Name8',
'Job8',
'Name9',
'Job9',
'Name10',
'Job10',
'Name11',
'Job11',
'Name12',
'Job12',
'Name13',
'Job13',
'Name14',
'Job14',
'Name15',
'Job15',
'Name16',
'Job16',
'Name17',
'Job17',
'Name18',
'Job18',
'Name19',
'Job19']