【发布时间】:2020-05-09 16:07:16
【问题描述】:
我有一个函数,它接收两个数据帧和一个字符串,如下所示,但我不太清楚如何创建一个新数据帧,我希望数据帧的名称是我输入到函数中的字符串最后与“venue_df”连接。
def basic_pivot(df1,df2,str):
if str=='first':
str+'venue_df'=df1.pivot_table(index=['venue_id','max'],
values=['match','name','continent','country'],
aggfunc={'match':'nunique','name':'last',
'continent':'first','country':'first'})
else:
None
return str+'venue_df'
【问题讨论】:
-
您希望这能做什么? “变量”在您的函数之外不可见,动态命名它没有效果。你想在
None子句之后返回什么值?它不会为“变量”分配任何东西,但会尝试返回它。 -
这只是函数的一部分——问题是我想稍后在同一个函数中多次调用该变量。
-
但是你不能提前知道这个名字,所以你只能把它称为
str+'venue_df'(如果它是有效的)。为什么不直接使用名为venue_df的常规变量?另一方面,如果您确定str=='first',那么您可以将变量命名为first_venue_df,无需动态创建变量。 -
啊,我想这实际上是真的。我可能只是有点过于复杂了。我想要这个的最初原因是因为我认为稍后在函数中加入四个或五个不同的数据透视表时会更容易,以便能够根据字符串的值引用哪些数据透视表,但认为只使用常规变量将是一种更简单的方法。