Python 3.x 如何用另一个数据帧替换一个数据帧?

Python 3.x 如何用另一个数据帧替换一个数据帧?,python-3.x,pandas,dataframe,replace,Python 3.x,Pandas,Dataframe,Replace,我传入一个数据帧,用于执行各种其他数据清理过程。这样做时,如果没有另一个数据帧,我无法完成其中一个过程 data= {'ID':[1,2], '2020-11-01' :[10,15], '2020-11-02':[43,35]} df1 = pd.DataFrame.from_dict(data) df1.head() ID 2020-11-01 2020-11-02 0 1 10 43 1 2 15 35 我需要将这些日期转换为这样使用的行 df2 =

我传入一个数据帧,用于执行各种其他数据清理过程。这样做时,如果没有另一个数据帧,我无法完成其中一个过程

data= {'ID':[1,2], '2020-11-01' :[10,15], '2020-11-02':[43,35]}
df1 = pd.DataFrame.from_dict(data)
df1.head()


    ID  2020-11-01  2020-11-02
0   1   10  43
1   2   15  35
我需要将这些日期转换为这样使用的行

df2 = df1.melt(id_vars = ["ID"], var_name = "ReportDate", value_name= "Units")
df2.head()

    ID  ReportDate  Units
0   1   2020-11-01  10
1   2   2020-11-01  15
2   1   2020-11-02  43
3   2   2020-11-02  35
现在我需要删除df1中的所有内容,并需要捕获df2到df1的详细信息

我尝试从df1中删除所有列(使用inplace=True),然后执行以下操作

df1["ID"] = df2["ID"]
df1["ReportDate"] = df2["ReportDate"]
df1["Units] = df2[Units]
df1.head()

    ID  ReportDate  Units
0   1   2020-11-01  10
1   2   2020-11-01  15
但由于df1的上一个形状是2x3,所以我只得到了2行

我需要我的输出看起来像

df1.head()

    ID  ReportDate  Units
0   1   2020-11-01  10
1   2   2020-11-01  15
2   1   2020-11-02  43
3   2   2020-11-02  35

如何让df1拥有df2的所有内容?

我知道目标是将
df2
的内容分配给
df1
,同时确保
id(df1)
不会通过此操作发生变化。这似乎可以做到,但可能不是最优雅的方式。与您尝试的主要区别在于删除索引和列

df1.drop(df1.columns, axis=1, inplace=True)
df1.drop(df1.index,  inplace=True)
df1[df2.columns] = df2[df2.columns]
df1.head()
也许更好的设计是让函数
处理数据
,可以这样使用

df1 = process_data(df1)

然后可以在函数内部更改df1,但当从函数返回时,它被分配给同一个变量

最终的df1应该是什么样子?请在显示早期阶段时显示为调用了
f1.head()
。为什么
df1=df2
不能满足您的要求?或者
import copy df1=copy.deepcopy(df2)
@noah我已经用head更新了我的结果,以及我的结果应该是什么样子like@piterbarg因为这不会更新现有的df1,它会创建一个新的dataframe对象,我无法传递我的类。我只使用inplace=true对一个数据帧进行所有更改,我还没有完成复制部分,让我试试看。这里是一个相关的讨论谢谢,我不知道我也可以删除索引,谢谢。我将尝试在现有设计中加入功能。