Python pandas 将列索引(A,B,C)转为(1,2,3)

文章目录

1 概述

  • pandas 是通过索引名(如:0、1、2) 或 列名(如:ID、Name、Age)来检索数据的,无法使用非列名的(A、B、C)来访问
  • 从感官的角度,直接使用 A、B、C 会比(0、1、2)来的直接
import pandas as pd

df = pd.DataFrame({
    'ID': [1, 2, 3],
    'Name': ['张三', '李四', '王五'],
    'Age': [18, 19, 20],
})
print(df)

# 访问第一行,第二列的数据(张三)
print(df.loc[0, 'Name'])  # 方式1
print(df.iloc[0, 1])  # 方式2

在这里插入图片描述

2 实现 ord()

def excel_column_to_number(col_index):
    """ 转换方法
    'a'=97、'b'=98、'c'=99,以此类推
    'A'=65、'B'=66、'C'=67,以此类推
    'A' 到 'Z' 总共有 26 个字母,也就是说,间隔 26
    """
    if not col_index or not col_index[0].isalpha():
        # 空字符串 或 非字母开头的列名
        return None

    number = 0
    # 转为大写,因为 excel 列均为大写,如:A,AB
    col_index = str.upper(col_index)
    for char in col_index:
        number = number * 26 + (ord(char) - ord('A') + 1)

    print(number - 1)   # 索引从 0 开始
    return number - 1


# 测试
excel_column_to_number('A')
excel_column_to_number('AA')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼丸丶粗面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值