Python pandas DataFrame数据拼接方法

目录
  • 前言
  • DataFrame数据拼接方法一:使用.append()方法。
  • DataFrame数据拼接方法二:使用.concat()方法。
  • 补充:Python同时合并多个DataFrame
  • 总结

前言

在pandas模块中,通常我们都需要对类型为DataFrame的数据进行操作,其中最为常见的操作便是拼接了。比如我们将两个Excel表格中的数据读入,随后拼接完成后保存进一个新的Excel表格文件中。之前查找了相关的博客, 发现网络上鱼龙混杂。有些代码完全无法执行,为了提高效率,这里做一个详细地记录。

DataFrame数据拼接方法一:使用.append()方法。

# -*- coding:utf-8 -*-
import pandas as pd

df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])

df = df1.append(df2)

print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
   0  1
0  1  2
1  3  4
df2的值为:
   0  1
0  5  6
1  7  8
df的值为:
   0  1
0  1  2
1  3  4
0  5  6
1  7  8
"""

我们可以看到,首先我们使用了类似于list列表的操作方式,使用.append()方法对df1与df2数据进行了操作,但是需要注意的是,不同于对列表对象的操作,这里的df1仍旧为原来的df1所拥有的内容,而我们赋值的对象df才是保存了二者拼接以后的结果。 所以记得一定要单独执行赋值才可以得到正确的结果!!!其次我们看到结果其实是有些问题的,df结果中的纵向索引值为0,1,0,1,仍旧保留了我们拼接前各自的索引值,这是不被我们需要的,因此我们需要设置 ignore_index=True来对索引值进行重新排列。代码如下:

# -*- coding:utf-8 -*-
import pandas as pd

df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])

df = df1.append(df2,  ignore_index=True)

print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
   0  1
0  1  2
1  3  4
df2的值为:
   0  1
0  5  6
1  7  8
df的值为:
   0  1
0  1  2
1  3  4
2  5  6
3  7  8
"""

我们可以看到,此时的纵向索引值变正常了。

注意: df1 = pd.DataFrame([[1, 2], [3, 4]])创建DataFrame类型的数据时要使用双层中括号,单层中括号会导致数据纵向排列。

DataFrame数据拼接方法二:使用.concat()方法。

# -*- coding:utf-8 -*-
import pandas as pd

df1 = pd.DataFrame([[1, 2], [3, 4]])
df2 = pd.DataFrame([[5, 6], [7, 8]])

df = pd.concat([df1, df2], ignore_index=True)

print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
   0  1
0  1  2
1  3  4
df2的值为:
   0  1
0  5  6
1  7  8
df的值为:
   0  1
0  1  2
1  3  4
2  5  6
3  7  8
"""

我们可以看到成功实现了拼接。

但是这样并不美观,我们发现,我们的纵向index还是用0,1在表示,那么我们可不可以自定义纵向index呢?答案是可以的,请看如下代码:

import pandas as pd

df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["column1", "column2"])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["column1", "column2"])

df = pd.concat([df1, df2], ignore_index=True)

print("df1的值为:")
print(df1)
print("df2的值为:")
print(df2)
print("df的值为:")
print(df)
"""
运行结果:
df1的值为:
   column1  column2
0        1        2
1        3        4
df2的值为:
   column1  column2
0        5        6
1        7        8
df的值为:
   column1  column2
0        1        2
1        3        4
2        5        6
3        7        8
"""

至此,DataFrame的拼接问题暂时告一段落,当然还存在其他方法,以后有机会了再补充,这两种方法均为比较直观和简洁的方法。推荐使用。此外, pd.concat()函数也适用于多个DataFrame的拼接, 只要将第一个参数变为一个列表,涵盖所有的DataFrame名称即可,如[df1, df2, df3]。

补充:Python同时合并多个DataFrame

pandas的merge函数只能同时合并三个dataframe,如果涉及到合并多个dataframe就比较麻烦

这种情况下我们可以创建一个我们需要合并的列表,然后将他们一次性合并在一起

# merge any number of dataframes
from functools import reduce
df_groups = [df2, group1, group2, group3, group4, group5, group6, group7, group8]
df_merged = reduce(lambda left, right: pd.merge(left, right, on=['title']), df_groups)
df_merged.head()

总结

到此这篇关于Python pandas DataFrame数据拼接的文章就介绍到这了,更多相关pandas DataFrame拼接内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用pandas忽略行列索引,纵向拼接多个dataframe

    从wind上面搞到一批股票数据后发现:本来是一个类型的数据,但是由于季度不同,列名也不同,导致使用pandas合并多个报表的时候总是出现一大堆NaN,所以这里我写了一个函数,专门针对这样的表 它的思路是: 生成一堆单词,然后把这些表的列索引全部替换为这些单词,然后调用 pd.concat() 把这些dataframe全部合并后再把列索引改回来,当然,这里也可以手动指定列索引. 使用方法见代码的最后一行,传入一个dataframe的list就可以了. import pandas as pd fro

  • Python pandas DataFrame数据拼接方法

    目录 前言 DataFrame数据拼接方法一:使用.append()方法. DataFrame数据拼接方法二:使用.concat()方法. 补充:Python同时合并多个DataFrame 总结 前言 在pandas模块中,通常我们都需要对类型为DataFrame的数据进行操作,其中最为常见的操作便是拼接了.比如我们将两个Excel表格中的数据读入,随后拼接完成后保存进一个新的Excel表格文件中.之前查找了相关的博客, 发现网络上鱼龙混杂.有些代码完全无法执行,为了提高效率,这里做一个详细地记

  • python pandas dataframe 按列或者按行合并的方法

    concat 与其说是连接,更准确的说是拼接.就是把两个表直接合在一起.于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis . 函数的具体参数是: concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False) objs 是需要拼接的对象集合,一般为列表或者字典 axis=0 是

  • pandas DataFrame数据转为list的方法

    首先使用np.array()函数把DataFrame转化为np.ndarray(),再利用tolist()函数把np.ndarray()转为list,示例代码如下: # -*- coding:utf-8-*- import numpy as np import pandas as pd data_x = pd.read_csv("E:/Tianchi/result/features.csv",usecols=[2,3,4])#pd.dataframe data_y = pd.read_

  • python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现

    相信很多人像我一样在学习python,pandas过程中对数据的选取和修改有很大的困惑(也许是深受Matlab)的影响... 到今天终于完全搞清楚了!!! 先手工生出一个数据框吧 import numpy as np import pandas as pd df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc')) df 是这样子滴 那么这三种选取数据的方式该怎么选择呢? 一.当每列已有column name时,用

  • python中DataFrame数据合并merge()和concat()方法详解

    目录 merge() 1.常规合并 ①方法1 ②方法2 重要参数 合并方式 left right outer inner 2.多对一合并 3.多对多合并 concat() 1.相同字段的表首位相连 2.横向表合并(行对齐) 3.交叉合并 总结 merge() 1.常规合并 ①方法1 指定一个参照列,以该列为准,合并其他列. import pandas as pd df1 = pd.DataFrame({'id': ['001', '002', '003'], 'num1': [120, 101,

  • Pandas DataFrame数据修改值的方法

    dfmi.iloc[:,1] pandas要修改值先需要了解DataFrame的一些知识 此处参照的是pandas的官方文档 When setting values in a pandas object, care must be taken to avoid what is calledchained indexing. Here is an example. 要修改pandas--DataFrame中的值要注意避免在链式索引上得到的DataFrame的值 这里创建了一个DataFrame d

  • Pandas实现数据拼接的操作方法详解

    目录 merge 操作 merge 拼接方式 merge 举例 join 操作 join 举例 concat 操作 concat 举例 append 举例 数据科学领域日常使用 Python 处理大规模数据集的时候经常需要使用到合并.链接的方式进行数据集的整合,其中应用的数据类型包括 Series 和 DataFrame,可以使用的方法也很多,比如本文中介绍的 .merge(). .join() 和 .concat() 三种方法,进行拼接处理后的数据集可以发挥最大的用途. merge 操作 .m

  • python pandas dataframe 行列选择,切片操作方法

    SQL中的select是根据列的名称来选取:Pandas则更为灵活,不但可根据列名称选取,还可以根据列所在的position(数字,在第几行第几列,注意pandas行列的position是从0开始)选取.相关函数如下: 1)loc,基于列label,可选取特定行(根据行index): 2)iloc,基于行/列的position: 3)at,根据指定行index及列label,快速定位DataFrame的元素: 4)iat,与at类似,不同的是根据position来定位的: 5)ix,为loc与i

  • Python pandas.DataFrame 找出有空值的行

    0.摘要 pandas中DataFrame类型中,找出所有有空值的行,可以使用.isnull()方法和.any()方法. 1.找出含有空值的行 方法:DataFrame[DataFrame.isnull().T.any()] 其中,isnull()能够判断数据中元素是否为空值:T为转置:any()判断该行是否有空值. import pandas as pd import numpy as np n = np.arange(20, dtype=float).reshape(5,4) n[2,3]

  • VBA处理数据与Python Pandas处理数据案例比较分析

    需求: 现有一个 csv文件,包含'CNUM'和'COMPANY'两列,数据里包含空行,且有内容重复的行数据. 要求: 1)去掉空行: 2)重复行数据只保留一行有效数据: 3)修改'COMPANY'列的名称为'Company_New': 4)并在其后增加六列,分别为'C_col','D_col','E_col','F_col','G_col','H_col'. 一,使用 Python Pandas来处理: import pandas as pd import numpy as np from p

随机推荐