3

I set up a new data frame SimMean:

    columns = ['Tenor','5x16', '7x8', '2x16H']
    index = range(0,12)
    SimMean = pd.DataFrame(index=index, columns=columns)

    SimMean
       Tenor 5x16  7x8 2x16H
    0    NaN  NaN  NaN   NaN
    1    NaN  NaN  NaN   NaN
    2    NaN  NaN  NaN   NaN
    3    NaN  NaN  NaN   NaN
    4    NaN  NaN  NaN   NaN
    5    NaN  NaN  NaN   NaN
    6    NaN  NaN  NaN   NaN
    7    NaN  NaN  NaN   NaN
    8    NaN  NaN  NaN   NaN
    9    NaN  NaN  NaN   NaN
    10   NaN  NaN  NaN   NaN
    11   NaN  NaN  NaN   NaN

I have another data frame FwdDf:

    FwdDf
            Tenor   5x16    7x8  2x16H
    0  2017-01-01  50.94  34.36  43.64
    1  2017-02-01  50.90  32.60  42.68
    2  2017-03-01  42.66  26.26  37.26
    3  2017-04-01  37.08  22.65  32.46
    4  2017-05-01  42.21  20.94  33.28
    5  2017-06-01  39.30  22.05  32.29
    6  2017-07-01  50.90  21.80  38.51
    7  2017-08-01  42.77  23.64  35.07
    8  2017-09-01  37.45  19.61  32.68
    9  2017-10-01  37.55  21.75  32.10
    10 2017-11-01  35.61  22.73  32.90
    11 2017-12-01  40.16  29.79  37.49
    12 2018-01-01  53.45  36.09  47.61
    13 2018-02-01  52.89  35.74  45.00
    14 2018-03-01  44.67  27.79  38.62
    15 2018-04-01  38.48  24.21  34.43
    16 2018-05-01  43.87  22.17  34.69
    17 2018-06-01  40.24  22.85  34.31
    18 2018-07-01  49.98  23.58  39.96
    19 2018-08-01  45.57  24.76  37.23
    20 2018-09-01  38.90  21.74  34.22
    21 2018-10-01  39.75  23.36  35.20
    22 2018-11-01  38.04  24.20  34.62
    23 2018-12-01  42.68  31.03  40.00

now I need to assign the 'Tenor' data from row 12 to row 23 in FwdDf to the new data frame SimMean.

I used

    SimMean.loc[0:11,'Tenor'] = FwdDf.loc [12:23,'Tenor']

but it didn't work:

    SimMean
       Tenor 5x16  7x8 2x16H
    0   None  NaN  NaN   NaN
    1   None  NaN  NaN   NaN
    2   None  NaN  NaN   NaN
    3   None  NaN  NaN   NaN
    4   None  NaN  NaN   NaN
    5   None  NaN  NaN   NaN
    6   None  NaN  NaN   NaN
    7   None  NaN  NaN   NaN
    8   None  NaN  NaN   NaN
    9   None  NaN  NaN   NaN
    10  None  NaN  NaN   NaN
    11  None  NaN  NaN   NaN

I'm new to python. I would appreciate your help. Thanks

1 Answer 1

3

call .values so there are no index alignment issues:

In [35]:
SimMean.loc[0:11,'Tenor'] = FwdDf.loc[12:23,'Tenor'].values
SimMean

Out[35]:
         Tenor 5x16  7x8 2x16H
0   2018-01-01  NaN  NaN   NaN
1   2018-02-01  NaN  NaN   NaN
2   2018-03-01  NaN  NaN   NaN
3   2018-04-01  NaN  NaN   NaN
4   2018-05-01  NaN  NaN   NaN
5   2018-06-01  NaN  NaN   NaN
6   2018-07-01  NaN  NaN   NaN
7   2018-08-01  NaN  NaN   NaN
8   2018-09-01  NaN  NaN   NaN
9   2018-10-01  NaN  NaN   NaN
10  2018-11-01  NaN  NaN   NaN
11  2018-12-01  NaN  NaN   NaN

EDIT

As your column is actually datetime then you need to convert the type again:

In [46]:
SimMean['Tenor'] = pd.to_datetime(SimMean['Tenor'])
SimMean

Out[46]:
        Tenor 5x16  7x8 2x16H
0  2018-01-01  NaN  NaN   NaN
1  2018-02-01  NaN  NaN   NaN
2  2018-03-01  NaN  NaN   NaN
3  2018-04-01  NaN  NaN   NaN
4  2018-05-01  NaN  NaN   NaN
5  2018-06-01  NaN  NaN   NaN
6  2018-07-01  NaN  NaN   NaN
7  2018-08-01  NaN  NaN   NaN
8  2018-09-01  NaN  NaN   NaN
9  2018-10-01  NaN  NaN   NaN
10 2018-11-01  NaN  NaN   NaN
11 2018-12-01  NaN  NaN   NaN
Sign up to request clarification or add additional context in comments.

4 Comments

Thanks! It seems I have problems because the tenor data is datetime. 'FwdDf.loc [12:23,'Tenor'] 12 2018-01-01 13 2018-02-01 14 2018-03-01 15 2018-04-01 16 2018-05-01 17 2018-06-01 18 2018-07-01 19 2018-08-01 20 2018-09-01 21 2018-10-01 22 2018-11-01 23 2018-12-01 Name: Tenor, dtype: datetime64[ns]'
So when I did your code, the new data frame is like 'imMean Tenor 5x16 7x8 2x16H 0 1514764800000000000 NaN NaN NaN 1 1517443200000000000 NaN NaN NaN 2 1519862400000000000 NaN NaN NaN 3 1522540800000000000 NaN NaN NaN 4 1525132800000000000 NaN NaN NaN 5 1527811200000000000 NaN NaN NaN 6 1530403200000000000 NaN NaN NaN 7 1533081600000000000 NaN NaN NaN 8 1535760000000000000 NaN NaN NaN 9 1538352000000000000 NaN NaN NaN 10 1541030400000000000 NaN NaN NaN 11 1543622400000000000 NaN NaN NaN'
It's taken the values as an incompatible type you need to convert it again, will update
Typically you edit you question so that formatting is not lost

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.