如何在pandas中重命名一批列?

时间:2017-08-28 12:57:56

标签: pandas machine-learning

我有一个包含1000列的pandas数据框。假设我想将列100到499重命名为[' x1',' x2',....,' x400']。有没有办法在pandas数据框中执行此操作而无需单独重命名每列?我知道如何进行多重命名我只是想知道是否可以为一系列列进行,而无需指定每个列的名称(我不想这样做)在dataframe.columns)中单独写入1000个列名。

2 个答案:

答案 0 :(得分:4)

首先创建字典然后再创建rename

np.random.seed(100)
df = pd.DataFrame(np.random.randint(10, size=(3,10)), columns=list('abcdefghij'))
print (df)
   a  b  c  d  e  f  g  h  i  j
0  8  8  3  7  7  0  4  2  5  2
1  2  2  1  0  8  4  0  9  6  2
2  4  1  5  3  4  4  3  7  1  1

a = df.columns[np.arange(4,8)]
b = ['x' + str(i) for i in np.arange(1,len(a)+1)]
d = dict(zip(a, b))
print (d)
{'h': 'x4', 'e': 'x1', 'f': 'x2', 'g': 'x3'}

df = df.rename(columns=d)
print (df)
   a  b  c  d  x1  x2  x3  x4  i  j
0  8  8  3  7   7   0   4   2  5  2
1  2  2  1  0   8   4   0   9  6  2
2  4  1  5  3   4   4   3   7  1  1

答案 1 :(得分:0)

您可以尝试这样:

t = iter(range(1, 401))
dataframe.columns = ['x'.format(next(t)) if 100 <= i <= 499 else x for i, x in enumerate(dataframe.columns, 1)]