非常基本的问题:当我想获得 20 个名称为 s1、s2、s3、...、s20 的列时,为 pandas 数据框生成一组列名称的最简单方法(最少代码)是什么?
最佳答案
您可以使用列表理解来生成列名:
In [66]:
col_list = ['s' + str(x) for x in range(1,21)]
col_list
Out[66]:
['s1',
's2',
's3',
's4',
's5',
's6',
's7',
's8',
's9',
's10',
's11',
's12',
's13',
's14',
's15',
's16',
's17',
's18',
's19',
's20']
之后,您可以将其作为 DataFrame
构造函数中的 column
arg 传递:
In [70]:
df = pd.DataFrame(np.random.randn(5,20), columns=col_list)
df.columns
Out[70]:
Index(['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11',
's12', 's13', 's14', 's15', 's16', 's17', 's18', 's19', 's20'],
dtype='object')
或者直接赋值覆盖 columns
属性:
In [71]:
df = pd.DataFrame(np.random.randn(5,20))
df.columns = col_list
df.columns
Out[71]:
Index(['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11',
's12', 's13', 's14', 's15', 's16', 's17', 's18', 's19', 's20'],
dtype='object')
您也可以使用 rename
或 rename_axis
但它们用于覆盖已有相关 post 的预先存在的列名称
您还可以为从范围创建的系列添加前缀:
In [76]:
col_list = 's' + pd.Series(np.arange(1,21)).astype(str)
df.columns= col_list
df.columns
Out[76]:
Index(['s1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', 's10', 's11',
's12', 's13', 's14', 's15', 's16', 's17', 's18', 's19', 's20'],
dtype='object')
关于python - 使用字符串和数字生成列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41503845/