Combine two Pandas series?
I have two Pandas Series, s1
and s2
that I would like to combine.
s1 = pd.Series([2,5,5], index=['a','b','c'])
s2 = pd.Series([2,4,7], index=['a','b','d'])
This is the result I would like:
s3 = pd.Series([4,9,5,7], index=['a','b','c','d'])
a 4
b 9
c 5
d 7
dtype: int64
I've tried the +
operator, s1.append(s2)
, and pd.join([s1,s2])
but these don't give the result I'm looking for.
python pandas
add a comment |
I have two Pandas Series, s1
and s2
that I would like to combine.
s1 = pd.Series([2,5,5], index=['a','b','c'])
s2 = pd.Series([2,4,7], index=['a','b','d'])
This is the result I would like:
s3 = pd.Series([4,9,5,7], index=['a','b','c','d'])
a 4
b 9
c 5
d 7
dtype: int64
I've tried the +
operator, s1.append(s2)
, and pd.join([s1,s2])
but these don't give the result I'm looking for.
python pandas
1
How about s1.add(s2)?
– Anton vBR
Nov 20 '18 at 17:07
add a comment |
I have two Pandas Series, s1
and s2
that I would like to combine.
s1 = pd.Series([2,5,5], index=['a','b','c'])
s2 = pd.Series([2,4,7], index=['a','b','d'])
This is the result I would like:
s3 = pd.Series([4,9,5,7], index=['a','b','c','d'])
a 4
b 9
c 5
d 7
dtype: int64
I've tried the +
operator, s1.append(s2)
, and pd.join([s1,s2])
but these don't give the result I'm looking for.
python pandas
I have two Pandas Series, s1
and s2
that I would like to combine.
s1 = pd.Series([2,5,5], index=['a','b','c'])
s2 = pd.Series([2,4,7], index=['a','b','d'])
This is the result I would like:
s3 = pd.Series([4,9,5,7], index=['a','b','c','d'])
a 4
b 9
c 5
d 7
dtype: int64
I've tried the +
operator, s1.append(s2)
, and pd.join([s1,s2])
but these don't give the result I'm looking for.
python pandas
python pandas
asked Nov 20 '18 at 17:04
maxmax
480113
480113
1
How about s1.add(s2)?
– Anton vBR
Nov 20 '18 at 17:07
add a comment |
1
How about s1.add(s2)?
– Anton vBR
Nov 20 '18 at 17:07
1
1
How about s1.add(s2)?
– Anton vBR
Nov 20 '18 at 17:07
How about s1.add(s2)?
– Anton vBR
Nov 20 '18 at 17:07
add a comment |
5 Answers
5
active
oldest
votes
Seems like add
will work here
s1.add(s2,fill_value=0)
Out[145]:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
add a comment |
Numpy np.add.at
This is kind of ridiculous but I wanted to show something different
import numpy as np
import pandas as pd
from itertools import chain
k, v = zip(*chain(*map(pd.Series.items, [s1, s2])))
i, r = pd.factorize(k)
out = np.zeros(len(r), dtype=int)
np.add.at(out, i, v)
pd.Series(out, r)
a 4
b 9
c 5
d 7
dtype: int64
1
This is good but seems way lengthy when pandas DataFrame.add is there :-)
– pygo
Nov 20 '18 at 17:29
@pygo hence the comment ridiculous. I personally believe it serves to show how it could be done differently. If people see these alternative answers, they may incorporate the knowledge and find better uses for it later.
– piRSquared
Nov 20 '18 at 17:33
of course that's good for ppls over SO for looking such logics, thnx.
– pygo
Nov 20 '18 at 17:35
add a comment |
Just use pandas.Series.add
s3 = s1.add(s2, fill_value=0)
#result
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
add a comment |
Alternative to add
pd.concat((s1,s2), axis=1, sort=True).sum(1, min_count=1)
Output:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
add a comment |
There is simple answer Directly from pandas.Series.add , you will get it from here
For you Use case here..
First dataframe:
>>> s1
a 2
b 4
c 5
dtype: int64
Second Dataframe:
>>> s2
a 2
b 4
d 7
dtype: int64
Simple DataFrame.add
+ fill_value
which is explained in docs:
>>> s1.add(s2, fill_value=0)
a 4.0
b 8.0
c 5.0
d 7.0
dtype: float64
Document :
fill_value : None or float value, default None
Fill existing missing (NaN) values, and any new element needed for
successful DataFrame alignment, with this value before computation. If
data in both corresponding DataFrame locations is missing the result
will be missing
These areSeries
so the correct method ispandas.Series.add
. Also, this is addressed by @W-B
– piRSquared
Nov 20 '18 at 17:35
Thnx for pointing that out , link is just stand corrected , i Know its addressed by @W-B and Drew Nicolette but thought to link that with original docs while showing that for the use case here, i'm firm believer in getting & putting the explanation and like that style because it helps newbies to understand under the hood :).
– pygo
Nov 20 '18 at 17:43
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398008%2fcombine-two-pandas-series%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
Seems like add
will work here
s1.add(s2,fill_value=0)
Out[145]:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
add a comment |
Seems like add
will work here
s1.add(s2,fill_value=0)
Out[145]:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
add a comment |
Seems like add
will work here
s1.add(s2,fill_value=0)
Out[145]:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
Seems like add
will work here
s1.add(s2,fill_value=0)
Out[145]:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
answered Nov 20 '18 at 17:07
W-BW-B
106k83165
106k83165
add a comment |
add a comment |
Numpy np.add.at
This is kind of ridiculous but I wanted to show something different
import numpy as np
import pandas as pd
from itertools import chain
k, v = zip(*chain(*map(pd.Series.items, [s1, s2])))
i, r = pd.factorize(k)
out = np.zeros(len(r), dtype=int)
np.add.at(out, i, v)
pd.Series(out, r)
a 4
b 9
c 5
d 7
dtype: int64
1
This is good but seems way lengthy when pandas DataFrame.add is there :-)
– pygo
Nov 20 '18 at 17:29
@pygo hence the comment ridiculous. I personally believe it serves to show how it could be done differently. If people see these alternative answers, they may incorporate the knowledge and find better uses for it later.
– piRSquared
Nov 20 '18 at 17:33
of course that's good for ppls over SO for looking such logics, thnx.
– pygo
Nov 20 '18 at 17:35
add a comment |
Numpy np.add.at
This is kind of ridiculous but I wanted to show something different
import numpy as np
import pandas as pd
from itertools import chain
k, v = zip(*chain(*map(pd.Series.items, [s1, s2])))
i, r = pd.factorize(k)
out = np.zeros(len(r), dtype=int)
np.add.at(out, i, v)
pd.Series(out, r)
a 4
b 9
c 5
d 7
dtype: int64
1
This is good but seems way lengthy when pandas DataFrame.add is there :-)
– pygo
Nov 20 '18 at 17:29
@pygo hence the comment ridiculous. I personally believe it serves to show how it could be done differently. If people see these alternative answers, they may incorporate the knowledge and find better uses for it later.
– piRSquared
Nov 20 '18 at 17:33
of course that's good for ppls over SO for looking such logics, thnx.
– pygo
Nov 20 '18 at 17:35
add a comment |
Numpy np.add.at
This is kind of ridiculous but I wanted to show something different
import numpy as np
import pandas as pd
from itertools import chain
k, v = zip(*chain(*map(pd.Series.items, [s1, s2])))
i, r = pd.factorize(k)
out = np.zeros(len(r), dtype=int)
np.add.at(out, i, v)
pd.Series(out, r)
a 4
b 9
c 5
d 7
dtype: int64
Numpy np.add.at
This is kind of ridiculous but I wanted to show something different
import numpy as np
import pandas as pd
from itertools import chain
k, v = zip(*chain(*map(pd.Series.items, [s1, s2])))
i, r = pd.factorize(k)
out = np.zeros(len(r), dtype=int)
np.add.at(out, i, v)
pd.Series(out, r)
a 4
b 9
c 5
d 7
dtype: int64
answered Nov 20 '18 at 17:23
piRSquaredpiRSquared
153k22144287
153k22144287
1
This is good but seems way lengthy when pandas DataFrame.add is there :-)
– pygo
Nov 20 '18 at 17:29
@pygo hence the comment ridiculous. I personally believe it serves to show how it could be done differently. If people see these alternative answers, they may incorporate the knowledge and find better uses for it later.
– piRSquared
Nov 20 '18 at 17:33
of course that's good for ppls over SO for looking such logics, thnx.
– pygo
Nov 20 '18 at 17:35
add a comment |
1
This is good but seems way lengthy when pandas DataFrame.add is there :-)
– pygo
Nov 20 '18 at 17:29
@pygo hence the comment ridiculous. I personally believe it serves to show how it could be done differently. If people see these alternative answers, they may incorporate the knowledge and find better uses for it later.
– piRSquared
Nov 20 '18 at 17:33
of course that's good for ppls over SO for looking such logics, thnx.
– pygo
Nov 20 '18 at 17:35
1
1
This is good but seems way lengthy when pandas DataFrame.add is there :-)
– pygo
Nov 20 '18 at 17:29
This is good but seems way lengthy when pandas DataFrame.add is there :-)
– pygo
Nov 20 '18 at 17:29
@pygo hence the comment ridiculous. I personally believe it serves to show how it could be done differently. If people see these alternative answers, they may incorporate the knowledge and find better uses for it later.
– piRSquared
Nov 20 '18 at 17:33
@pygo hence the comment ridiculous. I personally believe it serves to show how it could be done differently. If people see these alternative answers, they may incorporate the knowledge and find better uses for it later.
– piRSquared
Nov 20 '18 at 17:33
of course that's good for ppls over SO for looking such logics, thnx.
– pygo
Nov 20 '18 at 17:35
of course that's good for ppls over SO for looking such logics, thnx.
– pygo
Nov 20 '18 at 17:35
add a comment |
Just use pandas.Series.add
s3 = s1.add(s2, fill_value=0)
#result
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
add a comment |
Just use pandas.Series.add
s3 = s1.add(s2, fill_value=0)
#result
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
add a comment |
Just use pandas.Series.add
s3 = s1.add(s2, fill_value=0)
#result
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
Just use pandas.Series.add
s3 = s1.add(s2, fill_value=0)
#result
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
answered Nov 20 '18 at 17:11
Drew NicoletteDrew Nicolette
1063
1063
add a comment |
add a comment |
Alternative to add
pd.concat((s1,s2), axis=1, sort=True).sum(1, min_count=1)
Output:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
add a comment |
Alternative to add
pd.concat((s1,s2), axis=1, sort=True).sum(1, min_count=1)
Output:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
add a comment |
Alternative to add
pd.concat((s1,s2), axis=1, sort=True).sum(1, min_count=1)
Output:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
Alternative to add
pd.concat((s1,s2), axis=1, sort=True).sum(1, min_count=1)
Output:
a 4.0
b 9.0
c 5.0
d 7.0
dtype: float64
answered Nov 20 '18 at 17:11
Srce CdeSrce Cde
1,144511
1,144511
add a comment |
add a comment |
There is simple answer Directly from pandas.Series.add , you will get it from here
For you Use case here..
First dataframe:
>>> s1
a 2
b 4
c 5
dtype: int64
Second Dataframe:
>>> s2
a 2
b 4
d 7
dtype: int64
Simple DataFrame.add
+ fill_value
which is explained in docs:
>>> s1.add(s2, fill_value=0)
a 4.0
b 8.0
c 5.0
d 7.0
dtype: float64
Document :
fill_value : None or float value, default None
Fill existing missing (NaN) values, and any new element needed for
successful DataFrame alignment, with this value before computation. If
data in both corresponding DataFrame locations is missing the result
will be missing
These areSeries
so the correct method ispandas.Series.add
. Also, this is addressed by @W-B
– piRSquared
Nov 20 '18 at 17:35
Thnx for pointing that out , link is just stand corrected , i Know its addressed by @W-B and Drew Nicolette but thought to link that with original docs while showing that for the use case here, i'm firm believer in getting & putting the explanation and like that style because it helps newbies to understand under the hood :).
– pygo
Nov 20 '18 at 17:43
add a comment |
There is simple answer Directly from pandas.Series.add , you will get it from here
For you Use case here..
First dataframe:
>>> s1
a 2
b 4
c 5
dtype: int64
Second Dataframe:
>>> s2
a 2
b 4
d 7
dtype: int64
Simple DataFrame.add
+ fill_value
which is explained in docs:
>>> s1.add(s2, fill_value=0)
a 4.0
b 8.0
c 5.0
d 7.0
dtype: float64
Document :
fill_value : None or float value, default None
Fill existing missing (NaN) values, and any new element needed for
successful DataFrame alignment, with this value before computation. If
data in both corresponding DataFrame locations is missing the result
will be missing
These areSeries
so the correct method ispandas.Series.add
. Also, this is addressed by @W-B
– piRSquared
Nov 20 '18 at 17:35
Thnx for pointing that out , link is just stand corrected , i Know its addressed by @W-B and Drew Nicolette but thought to link that with original docs while showing that for the use case here, i'm firm believer in getting & putting the explanation and like that style because it helps newbies to understand under the hood :).
– pygo
Nov 20 '18 at 17:43
add a comment |
There is simple answer Directly from pandas.Series.add , you will get it from here
For you Use case here..
First dataframe:
>>> s1
a 2
b 4
c 5
dtype: int64
Second Dataframe:
>>> s2
a 2
b 4
d 7
dtype: int64
Simple DataFrame.add
+ fill_value
which is explained in docs:
>>> s1.add(s2, fill_value=0)
a 4.0
b 8.0
c 5.0
d 7.0
dtype: float64
Document :
fill_value : None or float value, default None
Fill existing missing (NaN) values, and any new element needed for
successful DataFrame alignment, with this value before computation. If
data in both corresponding DataFrame locations is missing the result
will be missing
There is simple answer Directly from pandas.Series.add , you will get it from here
For you Use case here..
First dataframe:
>>> s1
a 2
b 4
c 5
dtype: int64
Second Dataframe:
>>> s2
a 2
b 4
d 7
dtype: int64
Simple DataFrame.add
+ fill_value
which is explained in docs:
>>> s1.add(s2, fill_value=0)
a 4.0
b 8.0
c 5.0
d 7.0
dtype: float64
Document :
fill_value : None or float value, default None
Fill existing missing (NaN) values, and any new element needed for
successful DataFrame alignment, with this value before computation. If
data in both corresponding DataFrame locations is missing the result
will be missing
edited Nov 21 '18 at 3:20
answered Nov 20 '18 at 17:24
pygopygo
2,6681619
2,6681619
These areSeries
so the correct method ispandas.Series.add
. Also, this is addressed by @W-B
– piRSquared
Nov 20 '18 at 17:35
Thnx for pointing that out , link is just stand corrected , i Know its addressed by @W-B and Drew Nicolette but thought to link that with original docs while showing that for the use case here, i'm firm believer in getting & putting the explanation and like that style because it helps newbies to understand under the hood :).
– pygo
Nov 20 '18 at 17:43
add a comment |
These areSeries
so the correct method ispandas.Series.add
. Also, this is addressed by @W-B
– piRSquared
Nov 20 '18 at 17:35
Thnx for pointing that out , link is just stand corrected , i Know its addressed by @W-B and Drew Nicolette but thought to link that with original docs while showing that for the use case here, i'm firm believer in getting & putting the explanation and like that style because it helps newbies to understand under the hood :).
– pygo
Nov 20 '18 at 17:43
These are
Series
so the correct method is pandas.Series.add
. Also, this is addressed by @W-B– piRSquared
Nov 20 '18 at 17:35
These are
Series
so the correct method is pandas.Series.add
. Also, this is addressed by @W-B– piRSquared
Nov 20 '18 at 17:35
Thnx for pointing that out , link is just stand corrected , i Know its addressed by @W-B and Drew Nicolette but thought to link that with original docs while showing that for the use case here, i'm firm believer in getting & putting the explanation and like that style because it helps newbies to understand under the hood :).
– pygo
Nov 20 '18 at 17:43
Thnx for pointing that out , link is just stand corrected , i Know its addressed by @W-B and Drew Nicolette but thought to link that with original docs while showing that for the use case here, i'm firm believer in getting & putting the explanation and like that style because it helps newbies to understand under the hood :).
– pygo
Nov 20 '18 at 17:43
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53398008%2fcombine-two-pandas-series%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
How about s1.add(s2)?
– Anton vBR
Nov 20 '18 at 17:07