问题描述
1-这是我的数据框
Date Open Buy_Entry Sell_Entry
2015-08-31 49.419998 np.nan np.nan
2015-09-01 48.110001 np.nan np.nan
2015-09-02 48.660000 np.nan np.nan
2015-09-03 49.840000 np.nan np.nan
2015-09-04 48.810001 np.nan np.nan
... ... ... ...
2020-09-14 17.940001 np.nan np.nan
2020-09-15 17.200001 Buy Entry np.nan
2020-09-16 16.100000 Buy Entry np.nan
2020-09-17 15.800000 np.nan np.nan
2020-09-18 15.960000 np.nan np.nan
1273 rows × 3 columns
2-现在,我需要转换成这样的东西:
Date Open Buy_Entry Sell_Entry
2015-08-31 49.419998 np.nan np.nan
2015-09-01 48.110001 np.nan np.nan
2015-09-02 48.660000 np.nan np.nan
2015-09-03 49.840000 np.nan np.nan
2015-09-04 48.810001 np.nan np.nan
... ... ... ...
2020-09-14 17.940001 np.nan np.nan
2020-09-15 17.200001 17.200001 np.nan
2020-09-16 16.100000 16.100000 np.nan
2020-09-17 15.800000 np.nan np.nan
2020-09-18 15.960000 np.nan np.nan
1273 rows × 3 columns
我将np.nan值替换为0没问题,但是必须替换那些“购买条目” 恰好在该点(索引)具有“打开”值
Anny建议?
感谢您的帮助。问候!
解决方法
结合使用df.loc
和系列字符串搜索:
df["Buy_Entry"] = df.loc[df["Buy_Entry"].str.contains("Buy Entry"),"Open"]
或
df.loc[~df["Buy_Entry"].isna(),"Buy_Entry"] = df["Open"]