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对一个数据帧进行所有更改,我还没有完成复制部分,让我试试看。这里是一个相关的讨论谢谢,我不知道我也可以删除索引,谢谢。我将尝试在现有设计中加入功能。