1

I want to compare two data frames and put a boolean value in other data frame if the value of a is greater or not than the value of b.

Dataframe 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

So I want to do a dataframe C: fill with zeros and ones. try this:

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

1 Answer 1

3

If same number of rows and number of columns convert boolean mask to integers for True/False to 1/0 mapping:

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

Or use np.where:

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

Also is possible set new columns or index names (or both):

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)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.