c++两个vector合并_Python 中怎样合并数据

401c0cafeb63cb042b9fb835276248f8.png

1. 问题

数据连接是数据处理中经常需要用到的操作。Python 常见的数据类型,都应该怎样进行连接呢?

2. 分析

2.1. list

list 的连接是最容易的,直接用 Python 语法即可。

a = [1, 2, 3]b = [4, 5, 6]c = a + bprint(c)d = [a, b]print(d)

输出结果

[1, 2, 3, 4, 5, 6][[1, 2, 3], [4, 5, 6]]

2.2. dict

dict 不支持 +。想要合并两个dict,需要用到**操作符。

a = {'a': 1, 'b':2, 'c': 3}b = {'d': 4, 'e':5, 'f': 6}c = {**a, **b}print(c)

输出结果

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}

如果b里面有a的键值,后面的值会覆盖掉前面的值。

a = {'a': 1, 'b':2, 'c': 3}b = {'a': 4, 'e':5, 'f': 6}c = {**a, **b}print(c)

输出结果

{'a': 4, 'b': 2, 'c': 3, 'e': 5, 'f': 6}

2.3. set

set 不可 hashable,而且不支持+,所以需要另想办法。

a = set([1, 2, 3])b = set([1, 5, 6])c = a.union(b)print(c)d = {item for item in list(a) + list(b)}print(d)

比如用它的union方法,或者用iterate特性,都可以得出相同的结果

{1, 2, 3, 5, 6}{1, 2, 3, 5, 6}

2.4. ndarray

ndarray 合并的时候,需要注意坐标轴方向和相应方向大小是否吻合。比如

import numpy as npa = np.array([[1, 2, 3], [4, 5, 6]])b = np.array([[7, 8, 9], [10, 11, 12]])c = np.concatenate((a, b))print(c)d = np.concatenate((a, b), axis=1)print(d)

输出结果

[[ 1  2  3] [ 4  5  6] [ 7  8  9] [10 11 12]][[ 1  2  3  7  8  9] [ 4  5  6 10 11 12]]

或者

a = np.array([[1, 2, 3], [4, 5, 6]])b = np.array([[7, 8, 9]])c = np.concatenate((a, b))print(c)d = np.array([[7, 8]]).transpose()e = np.concatenate((a, d), axis=1)print(e)

输出结果

[[1 2 3] [4 5 6] [7 8 9]][[1 2 3 7] [4 5 6 8]]

如果是一个 vector 和一个 ndarray 想合并,可以给 vector 增加一个维度

a = np.array([[1, 2, 3], [4, 5, 6]])b = np.array([7, 8])c = b[:, np.newaxis]d = np.concatenate((a, c), axis=1)print(d)

输出结果

array([[1, 2, 3, 7],       [4, 5, 6, 8]])

2.5. DataFrame

DataFrame 比较灵活,可以在各个维度上进行扩展。所以连接的时候需要特别注意方向。

import pandas as pda = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=['a', 'b', 'c'])b = pd.DataFrame([[7, 8], [9, 10]], columns=['b', 'd'])c = pd.concat([a, b], axis=0)cd = pd.concat([a, b], axis=1)d

输出结果

abcd01.023.0NaN14.056.0NaN0NaN7NaN8.01NaN9NaN10.0abcbd0123781456910

3. 总结

今天我们大致总结了 Python 里面常见数据类型的合并方式。合并是最常见的数据操作之一,应该是熟练掌握的基本功之一。

相关代码均已上传到 Data2Science@Github (https://github.com/jetorz/Data2Science),欢迎标记 Star。

4. 交流

独学而无友则孤陋寡闻。现有「数据与统计科学」微信交流群,内有数据行业资深从业人员、海外博士、硕士等,欢迎对数据科学、数据分析、机器学习、人工智能有兴趣的朋友加入,一起学习讨论。

大家可以扫描下面二维码,添加荔姐微信邀请加入,暗号:机器学习加群。

d50240c8ef709b68c349ad0a85461081.png

Lily

5. 扩展

5.1. 延伸阅读

  1. Numpy 中如何对矩阵的特征对排序

5.2. 参考文献

  1. [1]M. Wes, Python for Data Analysis, 2nd. Beijing: O’Reilly, 2017.
  2. [1]J. VanderPlas, Python Data Science Handbook. Beijing: O’Reilly, 2016.

108123e3432b60afde27068bfbbd8901.png

Data2Science

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值