BUG: pandas.dataframe.eval fails to assign values to a subset of a column in some cases
- [ ] I have checked that this issue has not already been reported.

- [ ] I have confirmed this bug exists on the latest version of pandas.

- [ ] (optional) I have confirmed this bug exists on the master branch of pandas.

---

**Note**: Please read [this guide](https://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports) detailing how to provide the necessary information for us to reproduce your bug.

#### Code Sample, a copy-pastable example

```python
# Your code here

`>>> import pandas as pd
>>> df=pd.DataFrame({'A':[1,2,0,0],'B':[3,4,0,0]})
>>> df
   A  B
0  1  3
1  2  4
2  0  0
3  0  0
>>> df.loc[0:1,:].eval('A=B',inplace=True)
>>> df
   A  B
0  3  3
1  4  4
2  0  0
3  0  0
>>> df.loc[0:1,:].eval('A=1000',inplace=True)
>>> df
   A  B
0  3  3
1  4  4
2  0  0
3  0  0
>>> df[0:2].eval('A=B*10',inplace=True)
>>> df
    A  B
0  30  3
1  40  4
2   0  0
3   0  0
>>> df.loc[0:1,:].eval('C=A+B',inplace=True)
>>> df
    A  B
0  30  3
1  40  4
2   0  0
3   0  0
>>> df[0:2].eval('C=A+B',inplace=True)
>>> df
    A  B
0  30  3
1  40  4
2   0  0
3   0  0
>>> df.eval('C=A+B',inplace=True)
>>> df
    A  B   C
0  30  3  33
1  40  4  44
2   0  0   0
3   0  0   0
>>> df['D']=0
>>> df.loc[0:1,:].eval('D=A+B',inplace=True)
>>> df
    A  B   C  D
0  30  3  33  0
1  40  4  44  0
2   0  0   0  0
3   0  0   0  0
>>> df.insert(4,'E',0)
>>> df.loc[0:1,:].eval('E=A+B',inplace=True)
>>> df
    A  B   C  D  E
0  30  3  33  0  0
1  40  4  44  0  0
2   0  0   0  0  0
3   0  0   0  0  0
>>> df=df.assign(F=0)
>>> df
    A  B   C  D  E  F
0  30  3  33  0  0  0
1  40  4  44  0  0  0
2   0  0   0  0  0  0
3   0  0   0  0  0  0
>>> df.loc[0:1,:].eval('F=9',inplace=True)
>>> df
    A  B   C  D  E  F
0  30  3  33  0  0  0
1  40  4  44  0  0  0
2   0  0   0  0  0  0
3   0  0   0  0  0  0
>>> df.loc[0:1,:].eval('F=A',inplace=True)
>>> df
   A  B  C  D  E  F
0  30  3  33  0  0  0
1  40  4  44  0  0  0
2  0  0  0  0  0  0
3  0  0  0  0  0  0
>>> df=df.assign(F=0)
>>> df.loc[0:1,:].eval('F=A',inplace=True)
>>> df
   A  B  C  D  E   F
0  3  3  6  0  0  3
1  4  4  8  0  0  4
2  0  0  0  0  0   0
3  0  0  0  0  0   0`
#### Problem description
eval() assignment with inplace=True on dataframe subset fails in the following cases:
- when trying to assign an integer A=1000 (it did work for A=B)
- when trying to assign an integer or column operation to a new column C=A+B
- when trying to assign an integer or column operation to a column added after dataframe initialization F=9 , F=A (it did work after the second df=df.assign(F=0))

#### Expected Output
eval() should have changed the original df in all cases

#### Output of ``pd.show_versions()``


<details>

</details>
