如何合并两个 Pandas Series?

3
我有两个Pandas Series(s1和s2),如下所示:

import pandas as pd

index1 = list(range(6))
index2 = list(range(2, 8))

data1 = [7, 6, 1, 9, 3, 4]
data2 =       [1, 9, 3, 4, 10, 12]

s1 = pd.Series(data=data1, index=index1)
s2 = pd.Series(data=data2, index=index2)
和有一些共同的索引。且在相应的索引下,它们具有相同的值。

如何使用和创建一个包含以下内容的新Series :

>>> print(s3)
0     7
1     6
2     1
3     9
4     3
5     4
6    10
7    12

这里是合并的另一个示例:

import pandas as pd

index1 = list(range(6))
index2 = list(range(8, 14))

data1 = [7, 6, 1, 9, 3, 4]
data2 = [7, 2, 5, 6, 10, 12]

s1 = pd.Series(data=data1, index=index1)
s2 = pd.Series(data=data2, index=index2)

s3 = merge(s1, s2)

print(s3)

# 0      7
# 1      6
# 2      1
# 3      9
# 4      3
# 5      4
# 8      7
# 9      2
# 10     5
# 11     6
# 12    10
# 13    12
# dtype: int64

在这个例子中,s1s2没有共同的索引。

什么是确切的逻辑?是否总是有单个重叠部分?顺序很重要吗?它可以在中间重叠吗?没有详细信息很难提供确切的答案(我可以给你至少3种不同的解决方案,可以产生相同的输出,但不会以同样的方式概括)。 - mozway
s1s2可能有0或1个重叠部分。顺序很重要。 - Brian
稍等一下。让我在我的问题中提供更多的例子。 - Brian
此外,每个系列中是否可以有重复项? - mozway
等等,我没看到索引已经对齐了,那就很简单了。 - mozway
2个回答

2

如果您的索引已经对齐,则可以使用简单的combine_first函数:

out = s1.combine_first(s2).convert_dtypes()

输出:

0     7
1     6
2     1
3     9
4     3
5     4
6    10
7    12
dtype: Int64

第二个示例输出:

0      7
1      6
2      1
3      9
4      3
5      4
8      7
9      2
10     5
11     6
12    10
13    12
dtype: Int64

0
s3=pd.Index(s1).union(pd.Index(s2)).to_series()
s3

输出

0     7
1     6
2     1
3     9
4     3
5     4
6    10
7    12

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接