How to operate conditional calculation between columns in pandas dataframe?

Wookeun Lee

Here is a simple dataframe

import pandas as pd
import numpy as np
dates = pd. date_range(' 20130101' , periods=14)
data = pd.DataFrame({'a':[1,0,0,1,0,0,0,1,1,0,0,1,0,0],'b':[0,0,1,0,0,1,0,0,0,0,1,0,1,0]},index=dates)

Now I'd like to add column 'c', with the following conditions all together.

  1. if a = 1, c = 1
  2. if b = 1, c = 0
  3. if a = 0 and b = 0, c = c.shift(1) constraint : there exists no cases of a = 1 and b = 1 at the same time.

This is a simple question, but very hard to solve...

Any good idea?

jezrael

IIUC you need:

data['c'] = np.where(data.a == 1, 1,
            np.where(data.b == 1, 0, np.nan))
print (data)
            a  b    c
2013-01-01  1  0  1.0
2013-01-02  0  0  NaN
2013-01-03  0  1  0.0
2013-01-04  1  0  1.0
2013-01-05  0  0  NaN
2013-01-06  0  1  0.0
2013-01-07  0  0  NaN
2013-01-08  1  0  1.0
2013-01-09  1  0  1.0
2013-01-10  0  0  NaN
2013-01-11  0  1  0.0
2013-01-12  1  0  1.0
2013-01-13  0  1  0.0
2013-01-14  0  0  NaN

Then I am not sure if need bfill or ffill:

data['c'] = data['c'].bfill()
print (data)
            a  b    c
2013-01-01  1  0  1.0
2013-01-02  0  0  0.0
2013-01-03  0  1  0.0
2013-01-04  1  0  1.0
2013-01-05  0  0  0.0
2013-01-06  0  1  0.0
2013-01-07  0  0  1.0
2013-01-08  1  0  1.0
2013-01-09  1  0  1.0
2013-01-10  0  0  0.0
2013-01-11  0  1  0.0
2013-01-12  1  0  1.0
2013-01-13  0  1  0.0
2013-01-14  0  0  NaN

data['c'] = data['c'].ffill()
print (data)
            a  b    c
2013-01-01  1  0  1.0
2013-01-02  0  0  1.0
2013-01-03  0  1  0.0
2013-01-04  1  0  1.0
2013-01-05  0  0  1.0
2013-01-06  0  1  0.0
2013-01-07  0  0  0.0
2013-01-08  1  0  1.0
2013-01-09  1  0  1.0
2013-01-10  0  0  1.0
2013-01-11  0  1  0.0
2013-01-12  1  0  1.0
2013-01-13  0  1  0.0
2013-01-14  0  0  0.0

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

In Pandas, how to operate between columns in max perfornace

From Dev

Vectorized/Matrix calculation between 2 Pandas dataframe columns

From Dev

How do you filter rows in a pandas dataframe conditional on columns existing?

From Dev

Python & Pandas: How to do conditional calculation

From Dev

Calculation between groups in a Pandas multiindex dataframe

From Dev

Pandas - Conditional Calculation Based on Shift Values from Two Other Columns

From Dev

Conditional evaluation of expression over columns in a pandas dataframe

From Dev

pandas dataframe computation between columns

From Dev

Pandas Date Conditional Calculation

From Dev

Python: how to add a column to a pandas dataframe between two columns?

From Dev

python - Datetime calculation between two columns in python pandas

From Dev

R - How to add sequential columns to dataframe on conditional?

From Dev

Distance calculation between rows in Pandas Dataframe using a distance matrix

From Dev

How to write a conditional on two variables (columns) in Pandas

From Dev

matching of columns between two pandas dataframe

From Dev

pandas DataFrame - find max between offset columns

From Dev

Fuzzy Matching between 2 columns in pandas dataframe

From Dev

How to concat Pandas dataframe columns

From Dev

How to reduce columns in dataframe pandas

From Dev

Pandas Dataframe Complex Calculation

From Dev

pandas dataframe aggregate calculation

From Dev

Efficient calculation on a pandas dataframe

From Dev

pandas dataframe aggregate calculation

From Dev

Conditional replacement of multiple columns based on column values in pandas DataFrame

From Dev

python pandas conditional sum on dataframe which is grouped on multiple columns

From Dev

Applying function to columns of a Pandas DataFrame, conditional on data type

From Dev

Conditional aggregation on pandas dataframe columns with combining 'n' rows into 1 row

From Dev

New column in pandas DataFrame conditional on value of other columns

From Dev

How to add conditional row to pandas dataframe

Related Related

  1. 1

    In Pandas, how to operate between columns in max perfornace

  2. 2

    Vectorized/Matrix calculation between 2 Pandas dataframe columns

  3. 3

    How do you filter rows in a pandas dataframe conditional on columns existing?

  4. 4

    Python & Pandas: How to do conditional calculation

  5. 5

    Calculation between groups in a Pandas multiindex dataframe

  6. 6

    Pandas - Conditional Calculation Based on Shift Values from Two Other Columns

  7. 7

    Conditional evaluation of expression over columns in a pandas dataframe

  8. 8

    pandas dataframe computation between columns

  9. 9

    Pandas Date Conditional Calculation

  10. 10

    Python: how to add a column to a pandas dataframe between two columns?

  11. 11

    python - Datetime calculation between two columns in python pandas

  12. 12

    R - How to add sequential columns to dataframe on conditional?

  13. 13

    Distance calculation between rows in Pandas Dataframe using a distance matrix

  14. 14

    How to write a conditional on two variables (columns) in Pandas

  15. 15

    matching of columns between two pandas dataframe

  16. 16

    pandas DataFrame - find max between offset columns

  17. 17

    Fuzzy Matching between 2 columns in pandas dataframe

  18. 18

    How to concat Pandas dataframe columns

  19. 19

    How to reduce columns in dataframe pandas

  20. 20

    Pandas Dataframe Complex Calculation

  21. 21

    pandas dataframe aggregate calculation

  22. 22

    Efficient calculation on a pandas dataframe

  23. 23

    pandas dataframe aggregate calculation

  24. 24

    Conditional replacement of multiple columns based on column values in pandas DataFrame

  25. 25

    python pandas conditional sum on dataframe which is grouped on multiple columns

  26. 26

    Applying function to columns of a Pandas DataFrame, conditional on data type

  27. 27

    Conditional aggregation on pandas dataframe columns with combining 'n' rows into 1 row

  28. 28

    New column in pandas DataFrame conditional on value of other columns

  29. 29

    How to add conditional row to pandas dataframe

HotTag

Archive