I have two dataframes like below,

```
import numpy as np
import pandas as pd

df1 = pd.DataFrame({1: np.zeros(5), 2: np.zeros(5)}, index=['a','b','c','d','e'])

```

[![enter image description here](https://i.stack.imgur.com/FNtdG.png)](https://i.stack.imgur.com/FNtdG.png)

and

```
df2 = pd.DataFrame({'category': [1,1,2,2], 'value':[85,46, 39, 22]}, index=[0, 1, 3, 4])

```

[![enter image description here](https://i.stack.imgur.com/oXH95.png)](https://i.stack.imgur.com/oXH95.png)

The `value` from second dataframe is required to be assigned in first dataframe such that the index and column relationship is maintained. The second dataframe index is `iloc` based and has column `category` which is actually containing column names of first dataframe. The `value` is value to be assigned.

Following is the my solution with expected output,

```
for _category in df2['category'].unique():
    df1.loc[df1.iloc[df2[df2['category'] == _category].index.tolist()].index, _category]  = df2[df2['category'] == _category]['value'].values

```

[![enter image description here](https://i.stack.imgur.com/joLaa.png)](https://i.stack.imgur.com/joLaa.png)

Is there a pythonic way of doing so without the for loop?