我有一个创建许多熊猫数据框的项目。这些方法将根据用户输入进行各种操作,然后使用Class函数进行显示。有时可能需要从Class中更改数据框的某些部分。所以从本质上讲,我需要将数据帧传递给Class。
现在,我正在完成此操作(其中TableDisp是类):
ui = TableDisp()
self.ui.my_df = self.my_df
我意识到我可以通过类似...的方式来进行类初始化。
ui = TableDisp(self.my_df)
...如果我以此方式设置类,但该类的不同实例需要不同的df(需要清楚地标识)。即我需要做类似...
class TableDisp(Frame):
def __init__(self, my_df=None, another_df=None, more_df=None, still_more_df=None):
但是有十几个这样的东西。
我当前的方法是抛出...
SettingWithCopyWarning:
...每当我从Class更改df时,我都可以忽略,但是这让我想知道我是否以最pythonic的方式执行此操作。有什么想法吗?
答案 0 :(得分:2)
对于简单的修复,我将使用DataFrame.copy()
处理@Chris的注释。但是,在我看来,由于该类一次只需要保存一个数据帧,您可以像这样简化您的类定义:
class TableDisp(Frame):
def __init__(self, df=None, df_type=None):
if df_type == "type1":
# Format df in a specific way
elif df_type == "type2":
# You get the idea
else:
raise ValueError("Unrecognised df_type")