如何自动命名 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 在打印时重命名数据框列
如何将 lambda 函数正确应用到 pandas 数据框列