【问题标题】:How to add a string as a prefix when naming a dataframe命名数据框时如何添加字符串作为前缀
【发布时间】: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 子句之后返回什么值?它不会为“变量”分配任何东西,但会尝试返回它。
  • 这能回答你的问题吗? How do I create a variable number of variables?
  • 这只是函数的一部分——问题是我想稍后在同一个函数中多次调用该变量。
  • 但是你不能提前知道这个名字,所以你只能把它称为str+'venue_df'(如果它是有效的)。为什么不直接使用名为venue_df 的常规变量?另一方面,如果您确定str=='first',那么您可以将变量命名为first_venue_df,无需动态创建变量。
  • 啊,我想这实际上是真的。我可能只是有点过于复杂了。我想要这个的最初原因是因为我认为稍后在函数中加入四个或五个不同的数据透视表时会更容易,以便能够根据字符串的值引用哪些数据透视表,但认为只使用常规变量将是一种更简单的方法。

标签: python string dataframe


【解决方案1】:

唯一的办法就是制作字典:

dictionary = {}
if str=='first':
    dictionary[str] = df
return dictionary

来自您的代码:

 def basic_pivot(df1,df2,str):
    dictionary={}
    if str=='first':
       dictionary['venue_df'] =df1.pivot_table(index=['venue_id','max'],
                                    values=['match','name','continent','country'],
                                    aggfunc={'match':'nunique','name':'last',
                                             'continent':'first','country':'first'})
    else:
       return None
    return dictionary


dictionary['venue_df'].head()

【讨论】:

  • 抱歉,我不太了解您在这里所做的事情,或者这对我的代码有何作用。你能告诉我你在我的代码上下文中的意思吗?例如。如何使该数据透视表的名称等于 first_venue_df,以便我可以通过输入 first_venue_df 来调用它。
  • 我建议先学习如何在 python 中编码...否则每次使用 pandas 都会变得越来越难
  • 谢谢,但这不是我想要的。
  • 鉴于str 的值在if 块中是众所周知的,使用str+'venue_df' 的“结果”作为变量名完全没有问题——即只需使用first_venue_df = ...
  • 是的,在这种情况下确实如此,但稍后在函数中,我会遇到我想命名 dfs 的情况,其中 str 值未知,所以我可能会做你的事之前建议并保持命名更通用。
猜你喜欢
  • 1970-01-01
  • 2021-11-01
  • 2012-11-10
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 2020-10-29
  • 2018-12-24
  • 2013-08-27
相关资源
最近更新 更多