如何通过遍历不同数据帧中的列来创建新列?

时间:2020-01-28 02:08:47

标签: python pandas dataframe for-loop

我有两个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个新列,但是我不知道如何使用循环函数来创建结果。

2 个答案:

答案 0 :(得分:1)

您可以创建一个空的数据框并在循环时用值填充

(注意:col_namesdf3.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]