我有一个相对较大的数据框,其中包含一百多列。当前,只有第一列被分配了名称,数据框如下所示:

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和zipfrom_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']

08-24 22:36