保留原始列名

2024-09-26 18:10:30 发布

您现在位置:Python中文网/ 问答频道 /正文

在重命名数据帧时,我需要保留原始名称。例如

santandar_data = pd.read_csv(r"train.csv", nrows=40000)  
santandar_data.shape  

santandar_data.original_names=santandar_data.columns

ndf=santandar_data

ndf.original_names

Index(['ID', 'var3', 'var15', 'imp_ent_var16_ult1', 'imp_op_var39_comer_ult1',
       'imp_op_var39_comer_ult3', 'imp_op_var40_comer_ult1',
       'imp_op_var40_comer_ult3', 'imp_op_var40_efect_ult1',
       'imp_op_var40_efect_ult3',
       ...
       'saldo_medio_var33_hace2', 'saldo_medio_var33_hace3',
       'saldo_medio_var33_ult1', 'saldo_medio_var33_ult3',
       'saldo_medio_var44_hace2', 'saldo_medio_var44_hace3',
       'saldo_medio_var44_ult1', 'saldo_medio_var44_ult3', 'var38', 'TARGET'],
      dtype='object', length=371)

ndf dataframe对象有一个正确工作的属性。但是当我使用clean\u names函数时,我没有得到这个功能。你知道吗

df=santandar_data.clean_names(case_type="upper", remove_special=True).limit_column_characters(3)
df.original_names

AttributeError: 'DataFrame' object has no attribute 'original_names'

clean\u names函数来自:

https://github.com/ericmjl/pyjanitor/blob/master/janitor/functions.py

将此函数更改为包含原始列名作为属性值的最佳方法是什么?你知道吗


Tags: datanamesimporiginalopndfsaldomedio
1条回答
网友
1楼 · 发布于 2024-09-26 18:10:30

几乎可以肯定的是,pyjanitor.clean_names函数会返回输入数据帧的副本。复制数据帧是known to not copy arbitrary attributes assigned to an instance。你知道吗

但是,实际上,这些原始列标题不属于您的pd.DataFrame实例,因为您不能将它们直接用于标记或其他任何操作。你知道吗

我的建议是存储为一个单独的变量。如果需要使用数据帧进行分组,可以将字典与任何其他元数据一起使用:

df_dct = {'df': santandar_data, 'original_names': santandar_data.columns}

df_dct['df'] = df_dct['df'].clean_names(...)

相关问题 更多 >

    热门问题