pandas——改写pandas源文件以实现:使用pd.DataFrame.itertuples但不自动修正列名

使用pd.DataFrame.itertuples不自动修正列名

何为pandas.DataFrame.itertuples?

相较于 pandas.DataFrame.iterrows 而言,pandas.DataFrame.itertuples更好地提供了按行遍历DataFrame 的功能,详见pandas------按行遍历dataframe的优选方法(itertuples,iterrows)

这这里,我们需要了解的是,itertuples返回的是一个namedtuple迭代器。同时可以传递两个参数:name和index。其中,index决定了是否包含索引,而name决定了namedtuple的名称。

何为namedtuple?

那么到这里,就需要提到关于namedtuple的基本信息。

可以查看python------什么是namedtuple?了解它,理解它,掌握它

一旦了解过namedtuple后,我们就可以知道namedtuple有一个参数:rename。这个参数决定了是否将无效的字段名自动替换为位置名称。

问题所在

先看一下pandas.DataFrame.itertuples的源代码,方便起见我只摘取需要关注的一部分:

python 复制代码
def itertuples(
        self, index: bool = True, name: str | None = "Pandas", rename: bool = True
    ) -> Iterable[tuple[Any, ...]]:
    arrays = []
        fields = list(self.columns)
        if index:
            arrays.append(self.index)
            fields.insert(0, "Index")
            arrays.extend(self.iloc[:, k] for k in range(len(self.columns)))

        if name is not None:
            # https://github.com/python/mypy/issues/9046
            # error: namedtuple() expects a string literal as the first argument
            itertuple = collections.namedtuple(  # type: ignore[misc]
                name, fields, rename=True
            )
            return map(itertuple._make, zip(*arrays))

        # fallback to regular tuples
        return zip(*arrays)

如上所示,它直接定义了rename=True,也就默认让itertuples自动修正无效的字段名。

那么我们就需要将rename参数重新在itertuples中恢复,同时也不能影响pandas的正常使用

解决办法

直接将 rename=True改为rename=False即可。

友情提示

rename这个参数为True时,可以自动修正。但为False时,如果列名不符合python的命名规则,直接报错,并不是按照原名称进行输出。所以在使用时谨慎使用。

相关推荐
Cha0DD28 分钟前
【由浅入深探究langchain】第二十集-SQL Agent+Human-in-the-loop
人工智能·python·ai·langchain
Cha0DD30 分钟前
【由浅入深探究langchain】第十九集-官方的SQL Agent示例
人工智能·python·ai·langchain
智算菩萨2 小时前
【Tkinter】4 Tkinter Entry 输入框控件深度解析:数据验证、密码输入与现代表单设计实战
python·ui·tkinter·数据验证·entry·输入框
七夜zippoe2 小时前
可解释AI:构建可信的机器学习系统——反事实解释与概念激活实战
人工智能·python·机器学习·可解释性·概念激活
YuanDaima20485 小时前
[CrewAI] 第15课|构建一个多代理系统来实现自动化简历定制和面试准备
人工智能·python·面试·agent·crewai
WHS-_-20226 小时前
Python 算法题学习笔记一
python·学习·算法
码界筑梦坊6 小时前
353-基于Python的大湾区气候数据可视化分析系统
开发语言·python·信息可视化·数据分析·django·vue·毕业设计
如何原谅奋力过但无声6 小时前
【chap11-动态规划(上 - 基础题目&背包问题)】用Python3刷《代码随想录》
数据结构·python·算法·动态规划
云姜.7 小时前
JSON Schema使用
python·json
Sunshine for you7 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python