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

问题描述 投票:1回答:1

我想比较两个数据帧,如果a的值大于或小于b的值,则在其他数据帧中放置一个布尔值。

数据帧A:

                   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

所以我想做一个数据帧C:填充0和1。试试这个:

df = df.where(data.values > sma20.values, 1, 0)
python pandas
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.