Pandas的df.apply方法不会修改DataFrame。

8

我刚开始学习pandas,如果我的问题很幼稚,请谅解。

我尝试在一列上应用一个函数,但是它没有起作用,且我也没有看到任何错误。

 capitalizer = lambda x: x.upper()
    for df in pd.read_csv(downloaded_file, chunksize=2, compression='gzip', low_memory=False):
        df['level1'].apply(capitalizer)
        print df
        exit(1)

这个打印输出显示level1列的值与原始csv文件中的值相同,并没有使用upper方法进行处理。我是否漏掉了什么?谢谢。
2个回答

22

apply不是一个原地修改函数——它不会修改原始对象中的值,所以你需要将其赋值回去:

apply 不是一种原地(inplace)操作函数 - 它不会直接修改原始对象中的值,因此您需要将其分配回去:

df['level1'] = df['level1'].apply(capitalizer)

或者,您可以使用 str.upper ,它应该会快得多。

df['level1'] = df['level1'].str.upper()

2
df['level1'] = map(lambda x: x.upper(), df['level1'])

您可以使用上述代码将您的列转换为大写。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接