如何在函数中操作DataFrame名称?

时间:2020-06-28 23:12:38

标签: python pandas dataframe

如何在函数中操作DataFrame名称,以便可以拥有一个新名称的新DataFrame,该名称是从输入DataFrame名称返回的呢?

让我说这个:

def some_func(df):
   # some operations
   return(df_copy)

以及我在此函数中添加的任何df,它都应将新的df返回为..._ copy,例如some_func(my_frame)应该返回my_frame_copy。

考虑的事情如下:

  1. 与字符串操作相同; new_df_name = "{}_copy".format(df) -我知道这是行不通的,因为df引用了一个对象,但这只是有助于解释我要做什么。
def date_timer(df):
    df_copy = df.copy()
    dates = df_copy.columns[df_copy.columns.str.contains('date')]
    for i in range(len(dates)):
        df_copy[dates[i]] = pd.to_datetime(df_copy[dates[i]].str.replace('T', ' '), errors='coerce')
    return(df_copy) 
  1. 实际上,这是我尝试的第一件事,如果只有DataFrame具有“ name”属性,该属性允许我们操纵该名称,但是这还不存在:
df.name

也许f字符串或任何类型的字符串操作都可以实现它。如果没有,则可能无法在python中完成。

我认为这可能与python中的变量名分配规则有关。从某种意义上说,我想要的是反向工程师,但可能不可能。 请指教...

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试访问/动态设置程序中变量的全局/本地名称空间。

除非您的数据对象属于更结构化的namespace object,否则 我不鼓励您使用这种方法动态设置名称 ,因为可以进行很多操作错误,例如per the docs

更改可能不会影响解释器使用的局部变量和自由变量的值。


var length = Number(prompt("Enter a password length between 8 and 128")), charType = prompt("Enter up to 3 character types: special, numeric, uppercase, lowercase."), password = generatePassword(); document.getElementById("display").value = password; document.getElementById('copy-btn').addEventListener('click', copyPassword); function generatePassword() { var charSets = { lowercase: 'abcdefghijklmnopqrstuvwxyz', uppercase: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', numeric: '0123456789', special: ' !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~' }; var charSet = charSets[charType.toLowerCase()] || charSets.lowercase; var retVal = ""; for (var i = 0; i < length; i++) { retVal += charSet.charAt(Math.floor(Math.random() * charSet.length)); } return retVal; } function copyPassword() { document.getElementById("display").select(); document.execCommand("Copy"); alert("Password copied to clipboard!"); } 的{​​{1}}属性不是理想的解决方案,因为该属性的状态不会默认设置。这也不是特别常见。但是,这里有一个可靠的SO answer可以解决这个问题。


使用日期或有意义的键作为关键字将数据对象存储在字典中可能会更好。 示例:

name

希望这可以回答您的问题。请在评论中随时进行澄清。