Python 如何将lower()应用于列?

Python 如何将lower()应用于列?,python,pandas,Python,Pandas,在一个数据框架中,将所有类似文本的列小写的正确方法是什么?我在尝试这种方法 def lowercase(col): if isinstance(col, __pandas_object_type__): return col.str.lower() df = df.apply(lowercase) 其中,\uuuuuu\u对象\u类型\uuuuu只是一个用于标识对象类型或字符串类型的占位符。我知道,对于日期和时间,这类似于pd.DatetimeIndex,但我找不到适合

在一个数据框架中,将所有类似文本的列小写的正确方法是什么?我在尝试这种方法

def lowercase(col):
    if isinstance(col, __pandas_object_type__):
        return col.str.lower()
df = df.apply(lowercase)
其中,
\uuuuuu\u对象\u类型\uuuuu
只是一个用于标识对象类型或字符串类型的占位符。我知道,对于日期和时间,这类似于
pd.DatetimeIndex
,但我找不到适合我的案例的正确替代方案


感谢您的帮助

请尝试每一列,如果失败,请通过:

for col in df.columns:
    try:
        df[col] = df[col].str.lower()
    except AttributeError:
        pass
这样可以避免显式类型检查


警告:这将采用其中包含字符串的混合类型列,并将非字符串项替换为
NaN

只要尝试每个列,如果失败则通过:

for col in df.columns:
    try:
        df[col] = df[col].str.lower()
    except AttributeError:
        pass
这样可以避免显式类型检查


警告:这将采用包含字符串的混合类型列,并将非字符串项替换为
NaN

df.update(df.select_dtypes(include=['object'])。apply(pd.Series.str.lower,axis=1))@WeNYoBen这将在混合python类型的列上失败,不是吗?@PMende我不确定他真实数据中的混合类型,如果数据有混合类型,为了数据安全起见,我们应该降级数据类型。@WeNYoBen我刚刚检查过。您的方法显式失败。Mine无声地失败:它将混合的
str
/numeric列转换为
str
NaN
列,在该列中以前有numerics.df.update(df.select_dtypes(include=['object'])。apply(pd.Series.str lower,axis=1))@WeNYoBen这将在混合python类型的列上失败,不是吗?@PMende我不确定他真实数据中的混合类型,如果数据有混合类型,为了数据安全起见,我们应该降级数据类型。@WeNYoBen我刚刚检查过。您的方法显式失败。Mine无声地失败:它将混合的
str
/numeric列变为列,列中有
str
NaN
,而以前列中有数字。