当我连接两个熊猫数据帧时,为什么我得到NaN值>

时间:2017-04-27 03:00:22

标签: python pandas merge

我创建了2个数据框。一个名为'dfmas'的收盘价和移动平均线;

            PX_OPEN  PX_HIGH  PX_LOW  PX_LAST      ma5        ma8        ma21
Date                                                                         

12/19/2016   117.90   118.03  116.55   117.09  117.086  116.22625  114.231905
12/20/2016   117.09   118.24  116.99   117.86  117.620  116.70375  114.567143
12/21/2016   117.86   118.07  117.11   117.55  117.722  116.98250  114.872381
12/22/2016   117.55   117.88  117.27   117.54  117.594  117.29750  115.111429

然后我创建了另一个熊猫数据框'ma5xdf',它显示我5天移动平均线上升(+1)和下降(-1)或等级(0);

    ma5x
0      0
1      0
2      0
3      0
4     -1
5     -1
6     -1
7     -1
8      1
9      1

我想将两个数据帧合并为1但是我在上升/下降5天时获得了NaN值的加载,并且还在原始'dfmas'数据的尾部。我正在使用;

dfx = pd.concat([dfmas, ma5xdf], axis =1) 
print(dfx.tail(4))

我得到了;

      PX_OPEN  PX_HIGH  PX_LOW  PX_LAST  ma5  ma8  ma21  ma5x
1845      NaN      NaN     NaN      NaN  NaN  NaN   NaN   1.0
1846      NaN      NaN     NaN      NaN  NaN  NaN   NaN   1.0
1847      NaN      NaN     NaN      NaN  NaN  NaN   NaN   1.0
1848      NaN      NaN     NaN      NaN  NaN  NaN   NaN   1.0 

感谢您对代码的任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

如果您只想在第一个数据帧(dfmas)的末尾添加第二个数据帧(ma5xdf)的列,则可以执行此操作。

ma5xdf['ma5x'] = ma5xdf['ma5x'].astype(float)
dfmas['ma5x'] = ma5xdf['ma5x']

一个简单而精确的解决方案。

我看到您的索引已设置为dfmas中的date列。

另一种方法。

dfmas.reset_index(drop=True,inplace=True)
ma5xdf['ma5x'] = ma5xdf['ma5x'].astype(float)
dfmas['ma5x'] = ma5xdf['ma5x']
dfmas = dfmas.set_index('Date')