我创建了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
感谢您对代码的任何帮助,谢谢!
答案 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')