python - 按列索引 Pandas 数据框重命名列

标签 python pandas

我想将以下数据框的第 1 列重命名为“Ref”。
我有很多列,因此无法重命名每个列或为每个列设置名称。

data = [['TC1', 103, 563], ['TC2', 1567, 1290], ['TC3', 1467, 567]] 

dftrash=pd.DataFrame(data, columns = ['Card', '', '']) 

这是数据框
    Card        
0   TC1 1037    8563
1   TC2 1567    1290
2   TC3 1467    567

现在我想将第一列重命名为“Ref”。
我试过这个
dftrash.rename(columns={dftrash.columns[1]:'REF'},inplace=True)


它将所有具有相似标题的列重命名为 column[1]。

    Card REF    REF
0   TC1 1037    8563
1   TC2 1567    1290
2   TC3 1467    567

最佳答案

pandas 中的列是不可变的 - 你最好的办法是制作 numpy 数组,通过索引设置值并分配回:

#pandas 0.24+
a = dftrash.columns.to_numpy()
#pandas below
#a = dftrash.columns.to_numpy()
a[1] = 'REF'
print (a)
['Card' 'REF' '']

或将值转换为列表:
a = dftrash.columns.tolist()
a[1] = 'REF'
print (a)
['Card', 'REF', '']
dftrash.columns = a
print (dftrash)
  Card   REF      
0  TC1   103   563
1  TC2  1567  1290
2  TC3  1467   567

In past versions of pandas was problem assign to numpy array ,现在看来它工作得很好,但仍然推荐第一个解决方案:
dftrash.columns.values[1] = "REF"
print (dftrash)
  Card   REF      
0  TC1   103   563
1  TC2  1567  1290
2  TC3  1467   567

关于python - 按列索引 Pandas 数据框重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56648621/

相关文章:

python - rpy2 找不到包含目录

python - Django、Signals 和另一个进程

python - 开源 Enthought Python 替代方案

python - 当值存在时获取列索引作为值

python - 使用没有 eval() 函数的标准 python 库评估一串操作

python - 使用 .format 格式化字符串时检索预期的键名

python - 使用 python => 使用 RESTful API 数据从 JSON 到 pandas DataFrame

pandas - 如何在read_csv中指定日期时间格式

python - 如何检查 DF 的列表和记录之间是否存在匹配,并根据匹配的存在返回匹配的值

python - 相似的代码(指数加权偏差)在 Haskell 中比在 Python 中慢