2016-03-29 38 views
3

我成立了一個新的數據幀SimMean:如何將值從另一個數據幀在python分配到一個新的數據幀

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 

我有另外一個數據幀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 

現在我需要將FwdDf中第12行到第23行的'Tenor'數據分配給新數據幀SimMean。

我用

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

,但它沒有工作:

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 

我是新來的蟒蛇。我很感謝你的幫助。由於

回答

1

呼叫.values所以沒有指數的調整問題:

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 

編輯

當你的列實際上是datetime則需要再次轉換類型:

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 
+0

謝謝!看起來我有問題,因爲男高音數據是日期時間。 'FwdDf.loc [12:23',男高音'] 12 2018年1月1日13 2018年2月1日 14 2018年3月1日 15 2018年4月1日16 2018年5月1日 17 2018年6月1日18 2018年7月1日 19 2018年8月1日20 2018年9月1日21 2018年10月1日22 2018年11月1日23 2018年12月1日 名稱:男高音,D型:datetime64 [NS] ' – hassISC

+0

所以,當我做了你的代碼,新的數據幀像' imMean 中音5x16 7x8 2x16H 0 1514764800000000000楠楠的NaN 1 1517443200000000000楠楠的NaN 2 1519862400000000000楠楠的NaN 3 1522540800000000000楠楠的NaN 4 1525132800000000000楠楠的NaN 5 1527811200000000000楠楠的NaN 6 1530403200000000000楠楠的NaN 7 1533081600000000000楠楠的NaN 8 1535760000000000000楠楠的NaN 9 1538352000000000000楠楠的NaN 10 1541030400000000000楠楠的NaN 11 1543622400000000000 NaN NaN NaN' – hassISC

+0

它將值作爲您需要重新轉換的不兼容類型,將更新 – EdChum

相關問題