Как создать новые столбцы, просматривая столбцы в разных фреймах данных? - PullRequest
0 голосов
/ 28 января 2020

У меня есть два 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 новых столбца один за другим, но я не могу понять, как использовать функцию l oop для создания результатов.

Ответы [ 2 ]

1 голос
/ 28 января 2020

Вы можете создать пустой фрейм данных и заполнить его значениями во время цикла

(Примечание: 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
0 голосов
/ 28 января 2020

для для l oop, я бы сначала объединил 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...