合并两个或多个Pandas的Series可以通过以下4种方法实现:
- append方法
- concat方法
- combine_first方法
- merge方法
1. append方法
append()
方法将一个Serie添加到另一个Serie的尾部。
import pandas as pd
# 创建两个Series对象
s1 = pd.Series([1, 2, 3])
s2 = pd.Series([4, 5, 6])
# 使用append()方法合并两个Series
s3 = s1.append(s2)
print(s3)
输出结果:
0 1
1 2
2 3
0 4
1 5
2 6
dtype: int64
在上面的示例中,我们创建两个Series对象s1
和s2
。然后使用append()
方法将s2
合并到s1
的末尾,生成了一个新的Series对象s3
。
需要注意的是,由于s2
在s1
的后面进行了合并,所以s2
的index被重置为了0、1、2。如果要保持两个Series的index,可使用ignore_index
参数。
import pandas as pd
# 创建两个Series对象
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([4, 5, 6], index=['d', 'e', 'f'])
# 使用append()方法合并两个Series,并保留index
s3 = s1.append(s2, ignore_index=False)
print(s3)
输出结果:
a 1
b 2
c 3
d 4
e 5
f 6
dtype: int64
2. concat方法
concat()
方法可以将多个Series对象按行或列进行合并。具体来说,如果将多个Series按列合并,列名将保留原样;如果按行合并,Series的index将会重复。
import pandas as pd
# 创建两个Series对象
s1 = pd.Series([1, 2, 3])
s2 = pd.Series([4, 5, 6])
# 将s1和s2按列合并
s3 = pd.concat([s1, s2], axis=1)
print(s3)
输出结果:
0 1
0 1 4
1 2 5
2 3 6
在上面的示例中,我们使用pd.concat()
方法将s1
和s2
沿列的方向进行合并得到一个DataFrame。
如果想按行合并,可以将axis
参数设置为0。
import pandas as pd
# 创建两个Series对象
s1 = pd.Series([1, 2, 3])
s2 = pd.Series([4, 5, 6])
# 将s1和s2按行合并
s3 = pd.concat([s1, s2], axis=0)
print(s3)
输出结果:
0 1
1 2
2 3
0 4
1 5
2 6
dtype: int64
3. combine_first方法
combine_first()
方法可以将两个Series对象按index进行合并,缺失的值可以使用另一个Series中的值进行替换。
import pandas as pd
# 创建两个Series对象
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([4, 5, 6], index=['b', 'c', 'd'])
# 使用combine_first()方法合并s1和s2
s3 = s1.combine_first(s2)
print(s3)
输出结果:
a 1.0
b 2.0
c 3.0
d 6.0
dtype: float64
在上面的示例中,我们使用combine_first()
方法将s1
和s2
按照index进行合并,并用s2
中缺失的值来替换s1
中的缺失值。
4. merge方法
merge()
方法可以将两个Series对象按index或值进行合并,类似于数据库中的join操作。
import pandas as pd
# 创建两个Series对象
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([4, 5, 6], index=['b', 'c', 'd'])
# 使用merge()方法将s1和s2按照index进行合并
s3 = pd.merge(s1.to_frame('left'), s2.to_frame('right'), left_index=True, right_index=True, how='outer')
print(s3)
输出结果:
left right
a 1.0 NaN
b 2.0 4.0
c 3.0 5.0
d NaN 6.0
在上面的示例中,我们使用merge()
方法将s1
和s2
按照index进行合并,并使用left
和right
两个列名来表示s1
和s2
的值。最终得到一个DataFrame,其中缺失的值用NaN表示。
需要注意的是,因为merge()
方法返回的是一个DataFrame对象,而不是Series对象,所以要将s1
和s2
转换为DataFrame对象进行合并。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在python中pandas的series合并方法 - Python技术站