python - 使用字符串和数字生成列名

标签 python pandas dataframe

非常基本的问题:当我想获得 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')

您也可以使用 renamerename_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/

相关文章:

python - Pandas groupby agg - 如何获得计数?

python - 将 JSON 时间戳字符串转换为 pandas dataframe 中的 python 日期

python - 将列表从数据帧转换为 numpy 数组

python - 如何读取 Pandas 中的非结构化 csv

Python解析日期字符串为date

python - 如何评估一组行是否包含特定值?

python - 替换 Pandas 数据框中的单元格值

python - pandas.DataFrame 中一列的反向累积总和

python - Pandas - 有效的方法吗?

python - 使用 SQLAlchemy 的声明性语法时访问表实例的最佳方式