如何在python中为来自另一个数据帧的新数据帧赋值
我设置了一个新的数据框SimMean:如何在python中为来自另一个数据帧的新数据帧赋值,python,pandas,dataframe,Python,Pandas,Dataframe,我设置了一个新的数据框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
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行的“期限”数据分配给新的数据帧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
我是python新手。谢谢你的帮助。谢谢呼叫
。值
,因此没有索引对齐问题:
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
谢谢我似乎有问题,因为期限数据是datetimeFwdDf.loc[12:23,'期限']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姓名:期限,数据类型:datetime64[ns]”所以当我编写代码时,新的数据帧类似于“伊曼男高音5x16 7x8 2x16H 0 151476480000000000楠楠楠1 15174432000000000000楠楠楠2 1519862400000000000楠楠楠3 152254080000000000楠楠楠4 152513280000000000楠楠楠楠5 1527811200000000楠楠楠楠楠6 15304032000000000000楠楠楠楠楠楠楠楠楠楠4NaN 7 1533081600000000000 NaN NaN NaN 8 153576000000000000 NaN NaN NaN NaN 9 153835200000000000000 NaN NaN NaN NaN 10 15410304000000000 NaN NaN NaN NaN 11 1543622400000000000 NaN NaN NaN's将这些值视为不兼容的类型您需要再次转换它,更新通常你会编辑你的问题,这样格式就不会丢失无需担心,记住接受我的答案一旦它允许你,我的答案左上角会有一个空的勾号,这样这个问题就不会一直没有答案