如何自动命名 Pandas 数据框列?

Posted

技术标签:

【中文标题】如何自动命名 Pandas 数据框列?【英文标题】:How to name Pandas Dataframe Columns automatically? 【发布时间】:2020-06-13 02:48:38 【问题描述】:

我有一个带有 102 列的 Pandas 数据框 df。每列都有不同的名称,比如A, B, C 等,以给出原始数据框的结构

         Column A.    Column B.  Column C.   ....
Row 1.    
Row 2.
---
Row n

我想将列名从A, B, C 等更改为F1, F2, F3, ...., F102。我尝试使用 df.columns 但以这种方式重命名它们没有成功。有什么简单的方法可以自动将所有列名自动重命名为F1 to F102,而不是单独重命名每个列名?

【问题讨论】:

【参考方案1】:
df.columns=["F"+str(i) for i in range(1, 103)]

注意:

您可以使用计算的列数 (+ 1),而不是“神奇”数字103,例如

len(df.columns) + 1,或 df.shape[1] + 1

(感谢 ALollz 在他的评论中提供这个提示。)

【讨论】:

可能值得做["F"+str(i+1) for i in range(df.shape[1])] 这样你就不需要显式写列数了。 @ALollz,你说得对,谢谢,我可能会在我的答案中添加一些内容。【参考方案2】:

一种方法是将其转换为一对列表,并将列名列表转换为循环的索引:

import pandas as pd
d = 'Column A': [1, 2, 3, 4, 5, 4, 3, 2, 1], 'Column B': [1, 2, 3, 4, 5, 4, 3, 2, 1], 'Column c': [1, 2, 3, 4, 5, 4, 3, 2, 1]
dataFrame = pd.DataFrame(data=d)
cols = list(dataFrame.columns.values)                 #convert original dataframe into a list containing the values for column name
index = 1                                             #start at 1
for column in cols:
    cols[index-1] = "F"+str(index)                    #rename the column name based on index
    index += 1                                             #add one to index
vals = dataFrame.values.tolist()                      #get the values for the rows
newDataFrame = pd.DataFrame(vals,   columns=cols)     #create a new dataframe containing the new column names and values from rows
print(newDataFrame)

输出:

   F1  F2  F3
0   1   1   1
1   2   2   2
2   3   3   3
3   4   4   4
4   5   5   5
5   4   4   4
6   3   3   3
7   2   2   2
8   1   1   1

【讨论】:

以上是关于如何自动命名 Pandas 数据框列?的主要内容,如果未能解决你的问题,请参考以下文章

Pandas df.itertuples 在打印时重命名数据框列

将 pandas 数据框列导入为字符串而不是 int

如何将 lambda 函数正确应用到 pandas 数据框列

当列数事先未知时如何访问 Pandas 数据框列

如何将 pandas 数据框列转换为本机 python 数据类型?

Pandas:如何将数据框列中的“时间戳”值从对象/字符串转换为时间戳?