Python:返回函数变量并分配给新变量
我有一个函数返回一个熊猫数据框的字典。字典有一个关键字,每个数据帧的关键是它的对应名称。Python:返回函数变量并分配给新变量
def fun(inputs):
x = calculations
y = calculations
z = calculations, etc.
return: {'name1':x,'name2':y,'name3':z}
我想在我的代码的其他地方使用一些dataframes作为变量。为此,我目前执行以下操作:
x = fun()
var1 = x['name1']
var2 = x['name2']
var3 = x['name3']
等等。我想更有效地做到这一点(更少的代码行)。在我看来,我应该可以做这样的事情:
[var1,var2,var3] = fun()
但是,这只是每个名字分配给每一个变量为一个字符串。这可以做到吗?还是应该我的功能输出设置不同?
-
import
从namedtuple
功能collections
- 使用它来创建一个新的
class
然后你可以用它来实例化新的类成员 - 访问命名的元素现在利用点符号。
from collections import namedtuple
mydfs = namedtuple('MyDFs', ['name1', 'name2', 'name3'])
def fun(inputs):
x = calculations
y = calculations
z = calculations, etc.
return mydfs(x, y, z)
x = fun(inputs)
x.name1
如果你愿意,你也可以解开其中的一个:
var1, var2, var3 = x
老回答
最简单的方法是通过该字典的pd.Panel
构造函数
pn = pd.Panel({'name1':x,'name2':y,'name3':z})
这现在可以被认为是一系列的数据帧。每个数据帧可以通过pn['name1']
等访问。
因此......我们访问数据框的方式与字典完全一样吗?目前还不清楚这是如何让我们获得任何地方。 – user2357112
@ user2357112'True'。这是更方便的粘性结构。但访问是相同的。我将不得不重新考虑它。 – piRSquared
'pd.Panel'也面临着即将到来的折旧,我最近了解到。 – miradulo
为什么不只是使用字典*? –
@ juanpa.arrivillaga:所有时间到达[['']'键都很笨拙,它会使你的语句变得笨重,而且你的IDE不会像变量一样对字典条目有帮助。 – user2357112
然后不要使用字典,并返回一个元组并使用元组解包分配。 –