比较两个数据框并创建另一个

时间:2019-02-21 13:23:27

标签: python pandas

如果a的值大于或小于b的值,我想比较两个数据帧并将布尔值放入其他数据帧。

数据框A:

window/document

所以我想做一个数据框C:用零和一填充。 试试这个:

                   AA        AAPL          FB         GOOG        TSLA        XOM
    Date                                                                             
    2018-01-02  55.169998  168.987320  181.419998  1065.000000  320.529999  80.749893
    2018-01-03  54.500000  168.957886  184.669998  1082.479980  317.250000  82.335831
    2018-01-04  54.700001  169.742706  184.330002  1086.400024  314.619995  82.449791
    2018-01-05  54.090000  171.675278  186.850006  1102.229980  316.579987  82.383316
    2018-01-08  55.000000  171.037628  188.279999  1106.939941  336.410004  82.753677

Dataframe B:
                   AA        AAPL          FB         GOOG        TSLA        XOM
    Date   
    2018-11-15  38.5328  215.266614  155.709600  1119.715189  300.053598  80.719426
    2018-11-16  38.4318  214.728909  155.239400  1117.648390  301.874999  80.678900
    2018-11-19  38.2614  214.097401  154.586801  1114.755590  303.234399  80.645867
    2018-11-20  38.0976  213.179504  153.916600  1111.723590  304.595398  80.545809
    2018-11-21  37.9132  212.312794  153.373000  1109.219391  305.548398  80.452133

1 个答案:

答案 0 :(得分:3)

如果行数和列数相同,则将布尔掩码转换为True/False1/0映射的整数:

df = pd.DataFrame(data.values > sma20.values).astype(int))

或使用np.where

df = pd.DataFrame(np.where(data.values > sma20.values, 1, 0))

还可以设置新的列或索引名称(或同时设置两者):

df = pd.DataFrame(data.values > sma20.values).astype(int), 
                  index=data.index, columns=data.columns)

df = pd.DataFrame(np.where(data.values > sma20.values, 1, 0),
                  index=sma20.index, columns=sma20.columns)