gpt4 book ai didi

python - 当作为参数传递时,如何跨多个自定义函数处理 Pandas DataFrame?

转载 作者:行者123 更新时间:2023-12-03 21:12:53 25 4
gpt4 key购买 nike

我们有一个项目,其中有多个 *.py 脚本,其中包含接收和返回 Pandas 数据帧变量作为参数的函数。
但这让我想知道:当数据帧变量作为参数或从这些函数返回的变量传递时,它们在内存中的行为是什么?
修改 df 变量是否也会改变父/主/全局变量?
考虑以下示例:

import pandas as pd

def add_Col(df):
df["New Column"] = 10 * 3

def mod_Col(df):
df["Existing Column"] = df["Existing Column"] ** 2

data = [0,1,2,3]
df = pd.DataFrame(data,columns=["Existing Column"])

add_Col(df)
mod_col(df)

df

最后显示 df 时:会出现新列吗?调用 mod_col 时对“现有列”所做的更改如何?
调用 add_Col 函数是创建 df 的副本还是仅创建一个指针?
将数据帧传递给函数时的最佳实践是什么,因为如果它们足够大,我确信创建副本会对性能和内存产生影响,对吗?

最佳答案

是的,该函数确实会更改数据框本身而不创建它的副本。您应该小心它,因为您最终可能会在没有注意到的情况下更改列。
在我看来,最佳实践取决于用例,使用 .copy() 确实会对您的内存产生影响。
例如,如果您正在创建一个以某些数据帧作为输入的管道,则您不想更改输入数据帧本身。如果您只是在处理数据帧并且将处理拆分为不同的函数,则可以编写函数

关于python - 当作为参数传递时,如何跨多个自定义函数处理 Pandas DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62538804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com