我尝试通过Python函数创建并返回数据框
def create_df():
data = {'state': ['Ohio','Ohio','Ohio','Nevada','Nevada'],
'year': [2000,2001,2002,2001,2002],
'pop': [1.5,1.7,3.6,2.4,2.9]}
df = pd.DataFrame(data)
return df
create_df()
df
我收到一个错误消息,说df
未定义。如果我用print
替换return
,我会正确打印 Dataframe 。有办法做到这一点吗?
6条答案
按热度按时间ercv8c1e1#
当你调用
create_df()
的时候,Python调用了这个函数,但是没有把结果保存到任何变量中,这就是为什么你会得到这个错误。将
create_df()
的结果赋给一个新变量df
,如下所示:omqzjyyz2#
我在这里有点晚了,但是在函数中创建一个全局变量怎么样?它应该可以为您节省一个步骤。
然后,当您运行create_df()时,您将能够只使用df。
当然,如果你有一个大的程序,那么在命名策略上要小心,这样df的值就不会随着各种函数的执行而改变。
编辑:我注意到我在这方面得到了一些分数。这里有另一种(可能更糟糕)使用exec的方法。如果需要,它还允许创建多个 Dataframe 。
然后,您可以测试它们:
输入:
df_0
输出:
输入:
df_1
输出:
等等。
5fjcxozz3#
您可以通过制作 Dataframe 的副本从函数返回 Dataframe ,如下所示
输出:Pandas.核.帧. Dataframe
u91tlkcl4#
函数显式返回两个 Dataframe :
**调用并返回两个 Dataframe **
vsikbqxv5#
需要执行深度复制,以避免一个 Dataframe 引用另一个 Dataframe 的问题。当模块(或单独文件)中的函数返回 Dataframe 时,这一点至关重要。如果不返回DataFrame_object.copy(),它将仅返回对函数中创建的 Dataframe 的引用。
如果您在同一个文件中使用函数,那么在函数中使用全局变量时,您甚至可能不会意识到深层复制/浅层复制的问题。
s2j5cfk06#
我以前遇到过这个问题,但是通过在函数外部设置一个变量作为函数的输出,很容易就解决了这个问题。