[英]How can I manipulate a DataFrame name within a function?
How can I manipulate a DataFrame name within a function so that I can have a new DataFrame with a new name that is derived from the input DataFrame name in return?
假设我有这个:
def some_func(df):
# some operations
return(df_copy)
无论我在这个 function 中放入什么 df,它都应该将新的 df 作为 ..._copy 返回,例如 some_func(my_frame) 应该返回 my_frame_copy。
我考虑的事情如下:
new_df_name = "{}_copy".format(df)
-- 我知道这不起作用,因为 df 指的是 object 但它只是有助于解释我想要做什么。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)
df.name
也许 f-string 或任何类型的字符串操作都可以实现它。 如果没有,则可能无法在 python 中进行。
我认为这可能与 python 中的变量名分配规则有关。 从某种意义上说,我想要的是逆向工程,但可能是不可能的。 请指教...
看起来您正在尝试从程序中访问/动态设置变量的全局/局部命名空间。
除非您的数据 object 属于更结构化的命名空间 object ,否则我不鼓励您使用这种方法动态设置名称,因为很多 go 错误,根据文档:
更改可能不会影响解释器使用的局部变量和自由变量的值。
您的df
的name
属性不是一个理想的解决方案,因为默认情况下不会设置该属性的 state。 也不是特别常见。 但是,这是一个可靠的SO 答案,可以解决这个问题。
您最好将数据对象存储在字典中,使用日期或有意义的东西作为键。 例子:
my_data = {}
for my_date in dates:
df_temp = df.copy(deep=True) # deep copy ensures no changes are translated to the parent object
# Modify your df here (not sure what you are trying to do exactly
df_temp[my_date] = "foo"
# Now save that df
my_data[my_date] = df_temp
希望这能回答您的问题。请随时在评论中澄清。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.