Python 以小写形式转换多个数据帧

Python 以小写形式转换多个数据帧,python,pandas,Python,Pandas,我想把所有数据帧的行放在小写。我正在考虑多个数据帧,所以我正在对它们进行for循环。 我试过如下方法 for i, file in enumerate(files): df[str(i)]= pd.read_csv(file) df[str(i)].apply(lambda x: x.astype(str).str.lower()) 但不幸的是,它没有返回小写的行。 我在之前的帖子中给出了答案: 你能告诉我上面的代码有什么错误吗?谢谢看起来您正在将数据帧放入字典

我想把所有数据帧的行放在小写。我正在考虑多个数据帧,所以我正在对它们进行for循环。 我试过如下方法

for i, file in enumerate(files):
        df[str(i)]= pd.read_csv(file)
        df[str(i)].apply(lambda x: x.astype(str).str.lower())
但不幸的是,它没有返回小写的行。 我在之前的帖子中给出了答案:


你能告诉我上面的代码有什么错误吗?谢谢

看起来您正在将数据帧放入字典中;这肯定有帮助。
但是您必须将
.apply()
操作的结果分配给某个对象。
因为它没有被保存在任何地方。
改为尝试(将
df
重命名为更清晰):


你能试着这样使用它吗:

df[str(i)] = df[str(i)].apply(lambda x: x.astype(str).str.lower())
只在字符串列上操作更“干净”(更快)

Pandas有select\u dtypes方法,您可以在其中传递include='object' 参数,以获取对象类型的列(实际上是字符串)

但是将lambda函数应用于这样的数据帧(结果是 仅选择_dtypes)生成小写内容,但 不会把它保存在任何地方

因此,要转换有问题的列,您应该使用 这两个函数的结果(选择类型并应用):

我想,在这之后,您应该将当前的数据帧保存回来
到源文件。

非常感谢你们两位。两个答案都是正确的。是的,你说得对!我忘记保存更改,因此未分配更改不会应用并显示在任何位置。不客气。很高兴你知道发生了什么事。
df[str(i)] = df[str(i)].apply(lambda x: x.astype(str).str.lower())
df.update(df.select_dtypes(include='object')\
    .apply(lambda x: x.astype(str).str.lower()))