繁体   English   中英

Python Dataframe:创建使一列中的所有值都为大写的函数

[英]Python Dataframe: Create function that makes all values in one column uppercase

我有两个python数据帧。 我想将两个数据框的一列中的所有值都设为大写。

以下代码有效:

df_ERA4['reqmnt'] = df_ERA4['reqmnt'].str.upper()
df_ERA5['reqmnt'] = df_ERA5['reqmnt'].str.upper()

但是当我想在函数中做同样的事情时,它不起作用:

def uppercase(df):
    df['reqmnt'] = df['reqmnt'].str.upper()

df_ERA4 = uppercase(df_ERA4)
df_ERA5 = uppercase(df_ERA5)

df_ERA4.head()

具体来说,当我运行上面的代码时,它给出了以下错误:AttributeError:'NoneType'对象没有属性'head'

默认情况下,您的函数不会返回任何内容。 因此,默认情况下,它返回None 在调用函数时,正确的做法是不将返回值赋给任何东西,因为正在进行更改。

现在有几种选择。 第一个是:不返回任何东西,也不分配任何东西。

def upper(df, col):
    df[col] = df[col].str.upper()

upper(df, 'reqmnt')

然而,这可能不是最好的方法(就个人而言,我没有太多花哨的功能来执行就地操作)。 或者,您可以通过assign调用返回一个副本。

def upper(df, col):
    return df.assign(**{col : df[col].str.upper()})       

df = upper(df, 'reqmnt')

请注意,这方面需要注意 - assign返回副本,有时,效率/性能至关重要,您不希望不必要地复制GB数据。 使用什么应该由风格和需求的组合决定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM