Tushar Bhonsle
Tushar Bhonsle

Reputation: 35

I have pandas dataframe with 3 columns and want output like this

DataFrame of 3 Column

a   b   c               
1   2   4               
1   2   4               
1   2   4               

Want Output like this

a   b   c   a+b a+c b+c a+b+c
1   2   4   3   5   6   7
1   2   4   3   5   6   7
1   2   4   3   5   6   7

Upvotes: 0

Views: 60

Answers (2)

rednafi
rednafi

Reputation: 1731

You should always post your approach while asking a question. However, here it goes. This the easiest but probably not the most elegant way to solve it. For a more elegant approach, you should follow jezrael's answer.

Make your pandas dataframe here:

import pandas as pd
df = pd.DataFrame({"a": [1, 1, 1], "b": [2, 2, 2], "c": [4, 4, 4]})

Now make your desired dataframe like this:

df["a+b"] = df["a"] + df["b"]
df["a+c"] = df["a"] + df["c"]
df["b+c"] = df["b"] + df["c"]
df["a" + "b" + "c"] = df["a"] + df["b"] + df["c"]

This gives you:

|    |   a |   b |   c |   a+b |   a+c |   b+c |   abc |
|---:|----:|----:|----:|------:|------:|------:|------:|
|  0 |   1 |   2 |   4 |     3 |     5 |     6 |     7 |
|  1 |   1 |   2 |   4 |     3 |     5 |     6 |     7 |
|  2 |   1 |   2 |   4 |     3 |     5 |     6 |     7 |

Upvotes: 0

jezrael
jezrael

Reputation: 862731

Create all combinations with length 2 or more by columns and then assign sum:

from itertools import chain, combinations
#https://stackoverflow.com/a/5898031
comb = chain(*map(lambda x: combinations(df.columns, x), range(2, len(df.columns)+1)))

for c in comb:
    df[f'{"+".join(c)}'] = df.loc[:, c].sum(axis=1)
print (df)
   a  b  c  a+b  a+c  b+c  a+b+c
0  1  2  4    3    5    6      7
1  1  2  4    3    5    6      7
2  1  2  4    3    5    6      7

Upvotes: 3

Related Questions