pandas拼接dataframe,python pandas 拼接
当Python处理大规模数据集时,往往需要合并和链接数据集。本文主要介绍三种方法:merge(),join()和。concat()。有兴趣的可以看看。
目录
合并操作合并拼接模式合并示例join操作join示例concat操作concat示例append示例数据科学领域在日常生活中使用Python处理大规模数据集时,往往需要使用合并和链接的方法来整合数据集。其中,使用的数据类型包括Series和DataFrame,可以使用的方法有很多,比如。merge(),join()和。本文介绍的concat()。拼接后的数据集可以得到最大程度的利用。
merge 操作
.merge()方法用于组合一般列或索引中的数据。这种方法有点类似于MySQL中的join操作,可以实现左拼接、右拼接、全连接等操作。
通过关键词的索引,实现多对一连接、一对多连接、多对多连接(笛卡尔积)。
merge中参数的解释:
如何:定义合并方法,选择参数为“『内』”、“『外』、『左』、『右』。On:定义必须包含在两个数据帧中用于连接的列(索引键)。Left_on和right_on:指定要合并的左对象或右对象中的列或索引。Left_index和right_index:默认值为False,将索引列设置为合并基准。后缀:字符串元组,用于追加到不是合并键的同一列名。
merge 拼接方式
你可以在一张图中看到不同关键字参数合并的方式。
merge 举例
数据读取
我们想拼接影响和人物之间的直接关系。我们阅读的数据包括以下两个列表,在人物历史登入数据没有影响力的数据被排除在外。
进口熊猫作为pd
Country=pd.read _ excel(三国演义13/power list.xlsx )
People=pd.read _ excel(三国演义13/people . xlsx的历史登录数据)
#剔除被排除的权力数据,即武将处于对立的状态。
人民=人民[人民[权力]!=-]
country.head()
people.head()
内部联接
使用merge的默认参数直接进行内部连接,并匹配两个数据帧的交集结果。
拼接角色及其附属部队。这里我们取的是角色最后归属的势力,也就是角色数据聚合改变后的最后一条数据信息。
People_new=people.groupby(名字)。第n次(-1)
People_new[名字]=people_new.index
people _ new . reset _ index(drop=True,inplace=True)
人物_新
merge 中DataFrame的顺序决定了拼接结果的顺序。
inner _ merged _ total=PD . merge(country,people _ new,on=[power])
我
nner_merged_total.head()
inner_merged_total = pd.merge(people_new,country,on=["勢力"])
外连接
外连接(也称为完全外连接)中,来自两个 DataFrame 的所有行都将出现在新的 DataFrame 中。
本质上对于数据全的 df_A 和包含的 df_B 进行 outer 拼接,相当于 pd.merge(df_A ,df_B,on=[key])。
outer_merged = pd.merge(people_new,country,how="outer",on=["勢力"])
如果我们不剔除在野武将的数据的话会发现是整张表单进行拼接。
country = pd.read_excel("Romance of the Three Kingdoms 13/势力列表.xlsx")
左连接
新合并的 DataFrame 与左侧 DataFrame 中的所有行一起保留(即merge中的第一个dataframe),同时丢弃右侧 DataFrame 中在左侧 DataFrame 的键列中没有匹配的行。
left_merged = pd.merge(people_new,country,how="left",on=["勢力"])
右连接
新合并的 DataFrame 与右侧 DataFrame 中的所有行一起保留(即merge中的第二个dataframe),同时丢弃右侧 DataFrame 中在左侧 DataFrame 的键列中没有匹配的行。
right_merged = pd.merge(people_new,country,how="right",on=["勢力"])
join 操作
join 操作和 merge 很相似,是在列或索引上组合数据,join 相当于指定了 merge 中的第一个 DataFreme 。并且命名冲突的列可以定义后缀进行重新命名。
这个结果和之前的左右 merger 很相似。
join 中参数解释:
other:定义要拼接的 DataFrame。
on:指定左侧 DataFrame 的可选列或索引名称。如果设置为 None,这是默认 index 连接。
how:与 merge 中的 how 具有相同,如果不指定列则使用索引拼接。
lsuffix 和 rsuffix:类似 merge() 中的后缀。
sort:对生成后的 DataFrame 进行排序。
join 举例
people_new.join(country, lsuffix="left", rsuffix="right")
仅仅是index的横向拼接。
concat 操作
concat 操作起来就比较灵活,可以进行横向的拼接操作,也可以进行纵向的拼接操作。
纵向拼接操作
横拼接操作
concat 中参数解释:
objs:要连接的任何数据对象。可以是List,Serices,DataFrame,Dict 等等。
axis:连接的轴。默认值为0(行轴),1(纵直)连接。
join:类似于 merger 中的 how 参数,只接受值 inner 或 outer 。
ignore_index:默认为False。True 为设置新的组合数据集将不会保留 axis 参数中指定的轴中的原始索引值。
keys:构建分层索引,用于查询不同的行来自的原始数据集。
copy:是否要复制源数据,默认值为True。
concat 举例
我们使用三国的宝物数据来观察,数据 74 行。
import pandas as pd
横向拼接后,保持数据最大行数 74。
pd.concat([items, items], axis=1)
纵向拼接后,最大行数变成 74 的 2倍。
pd.concat([items, items], axis=0)
append 举例
append 也是 DataFrame 数据进行拼接的有效方式,方式同 concat 的纵向拼接,返回的结果需要对变量重新定义才能生效。
注意下面2个 append 行数的区别
items.append(items)
items = items.append(items)
到此这篇关于Pandas实现数据拼接的操作方法详解的文章就介绍到这了,更多相关Pandas数据拼接内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。