如何在python中使用数字重命名多个列?

时间:2016-06-08 11:34:43

标签: python dictionary pandas rename multiple-columns

我有一个包含~2400列的数据框,我想将1中的所有列重命名为2400
我当前的列名是数字,几乎所有列都是重复的。

我正在尝试类似的东西,但它不起作用:

# An example
import pandas as pd
# Create an example dataframe
data = {'Commander': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 'Date': ['2012, 02, 08', '2012, 02, 08', '2012, 02, 08', '2012, 02, 08', '2012, 02, 08'],'Score': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data, index = ['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'])

ncol = len(df.columns)
for col in df.columns :
    for i in range(ncol) :
        df.rename(columns={col: str(i)}, inplace=True)

提前谢谢。

2 个答案:

答案 0 :(得分:1)

你可以做的IIUC

df.columns = pd.Index(np.arange(1,len(df.columns)+1).astype(str)

所以这只是用Index生成的新np.arange对象覆盖列,然后使用str

将dtype转换为astype

示例:

In [244]:
df = pd.DataFrame(np.random.randn(4,4))
df.columns

Out[244]:
RangeIndex(start=0, stop=4, step=1)

In [243]:
df.columns = pd.Index(np.arange(1,len(df.columns)+1)).astype(str)
df.columns

Out[243]:
Index(['1', '2', '3', '4'], dtype='object')

在你的例子上:

In [245]:
data = {'Commander': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 'Date': ['2012, 02, 08', '2012, 02, 08', '2012, 02, 08', '2012, 02, 08', '2012, 02, 08'],'Score': [4, 24, 31, 2, 3]}
df = pd.DataFrame(data, index = ['Cochice', 'Pima', 'Santa Cruz', 'Maricopa', 'Yuma'])
df.columns = pd.Index(np.arange(1,len(df.columns)+1)).astype(str)
df.columns

Out[245]:
Index(['1', '2', '3'], dtype='object')

答案 1 :(得分:1)

np.arange当然有效,但您也可以使用list理解:

df.columns = [i for i in range(len(df.columns))]

如果您想将它们作为字符串,请使用[str(i) for i in range(len(df.columns))]