Python数据框: Create function that makes all values in one column uppercase

标签 python function pandas

我有两个 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' object has no attribute '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 数据的副本。使用什么应该根据风格和需求来决定。

关于Python数据框: Create function that makes all values in one column uppercase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47875208/

相关文章:

python - 在 Python 中删除带有水印的图像上的黑色边框

Javascript:以元音为键、以计数为值填充对象的函数

C: 无法显示链表值

c++ - 如果您不知道传递的方法的确切类,如何将方法传递给类

pandas - pd.dataframe.apply() 创建多个新列

python - 根据三列的值有条件地交互式计算列

python - 分别保存散点图的颜色条

python - 如何使用 matplotlib 颜色图将数字映射到颜色?

python - 将随机列乘以另一列

python - 在 django 设置中管理 key