首页 > 解决方案 > 解释 Pandas 列引用语法

问题描述

我有使用 R 进行数据处理的基本背景,但对 Python 很陌生。我从 Coursera 上的教程中发现了这个代码片段。

有人可以向我解释一下columns ={col:'Gold' + col[4:]}, inplace = True是什么意思吗?

(1)据我的理解,df.rename是将现有列名重命名为(在第一行的情况下为Gold),但为什么需要在它后面加上+col[4:]?

(2) 将函数就地声明为 True是否意味着将生成的 df 输出分配给原始 df?

import pandas as pd

df = pd.read_csv('olympics.csv', index_col=0, skiprows=1)

for col in df.columns:
    if col[:2]=='01':
        df.rename(columns={col:'Gold'+col[4:]}, inplace=True)
    if col[:2]=='02':
        df.rename(columns={col:'Silver'+col[4:]}, inplace=True)
    if col[:2]=='03':
        df.rename(columns={col:'Bronze'+col[4:]}, inplace=True)
    if col[:1]=='№':
        df.rename(columns={col:'#'+col[1:]}, inplace=True)

先感谢您。

标签: pythonpandas

解决方案


它的意思是:

#for each column name
for col in df.columns:
    #check first 2 chars for 01
    if col[:2]=='01':
        #replace column name with text gold and all characters after 4th letter
        df.rename(columns={col:'Gold'+col[4:]}, inplace=True)
    #similar like above
    if col[:2]=='02':
        df.rename(columns={col:'Silver'+col[4:]}, inplace=True)
    #similar like above
    if col[:2]=='03':
        df.rename(columns={col:'Bronze'+col[4:]}, inplace=True)
    #check first letter
    if col[:1]=='№':
        #add # after first letter
        df.rename(columns={col:'#'+col[1:]}, inplace=True)

将函数就地声明为 True 是否意味着将生成的 df 输出分配给原始数据帧

是的你是对的。它替换就地列名称。


推荐阅读