![](/img/trans.png)
[英]DataFrame apply a function to the values in one column to create another
[英]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.