我有两个pd.dataframes
:
df1:
Year Replaced Not_replaced
2015 1.5 0.1
2016 1.6 0.3
2017 2.1 0.1
2018 2.6 0.5
df2:
Year HI LO RF
2015 3.2 2.9 3.0
2016 3.0 2.8 2.9
2017 2.7 2.5 2.6
2018 2.6 2.2 2.3
我需要使用以下公式创建第三个df3
:
df3[column1]=df1['Replaced']-df1['Not_replaced]+df2['HI']
df3[column2]=df1['Replaced']-df1['Not_replaced]+df2['LO']
df3[column3]=df1['Replaced']-df1['Not_replaced]+df2['RF']
我可以合并两个数据框并手动一个接一个地创建3个新列,但是我不知道如何使用循环函数来创建结果。
答案 0 :(得分:1)
您可以创建一个空的数据框并在循环时用值填充
(注意:col_names
和df3.columns
的长度必须相同)
df3 = pd.DataFrame(columns = ['column1','column2','column3'])
col_names = ["HI", "LO","RF"]
for incol,df3column in zip(col_names,df3.columns):
df3[df3column] = df1['Replaced']-df1['Not_replaced']+df2[incol]
print(df3)
输出
column1 column2 column3
0 4.6 4.3 4.4
1 4.3 4.1 4.2
2 4.7 4.5 4.6
3 4.7 4.3 4.4
答案 1 :(得分:0)
对于for循环,我首先将df1和df2合并为一个新的df,称为df3。然后,我将创建要迭代的列的名称列表:
col_names = [“ HI”,“ LO”,“ RF”]
for col in col_names:
df3[f"column_{col}]= df3['Replaced']-df3['Not_replaced]+df3[col]