Pandas DataFrame列重命名返回None问题及重命名+向上取整需求
需求2:实现数值列向上取整 + 批量重命名所有列
我们可以分两步完成这个需求,先处理数值列的向上取整,再批量重命名列,下面是完整的实现代码和说明:
步骤1:筛选数值列并向上取整
先用select_dtypes筛选出所有数值类型的列(int、float等),再用numpy的ceil函数对这些列的值做向上取整:
import pandas as pd import numpy as np # 示例数据 df = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie'], 'score1': [85.2, 90.7, 78.4], 'score2': [76.5, 88.1, 92.9], 'age': [22, 25, 23] }) # 筛选数值类型的列 numeric_cols = df.select_dtypes(include=['int64', 'float64']).columns # 对数值列执行向上取整 df[numeric_cols] = np.ceil(df[numeric_cols])
步骤2:批量重命名所有列
批量重命名可以用df.rename()方法,传入函数或字典来定义规则,这里给两个常见的实用例子:
例子1:给所有列加前缀
# 给每个列名加上"processed_"前缀 df = df.rename(columns=lambda x: f'processed_{x}')
例子2:把所有列名转成大写
# 批量将列名转为大写 df = df.rename(columns=str.upper)
整合后的可复用函数
把两步封装成函数,方便后续调用:
import pandas as pd import numpy as np def process_dataframe(df, rename_rule=None): # 第一步:数值列向上取整 numeric_cols = df.select_dtypes(include=['int64', 'float64']).columns df[numeric_cols] = np.ceil(df[numeric_cols]) # 第二步:批量重命名列,默认加前缀 if rename_rule is None: df = df.rename(columns=lambda x: f'processed_{x}') else: df = df.rename(columns=rename_rule) return df # 测试函数 df = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie'], 'score1': [85.2, 90.7, 78.4], 'score2': [76.5, 88.1, 92.9], 'age': [22, 25, 23] }) processed_df = process_dataframe(df) print(processed_df)
运行后你会得到数值列全部向上取整、且列名带processed_前缀的DataFrame。如果需要自定义重命名规则,只需要给rename_rule传一个函数或字典即可,比如rename_rule=str.lower就能把列名改成小写。
内容的提问来源于stack exchange,提问作者milawithict
相关产品推荐
相关产品推荐

