Pandas数据组合
连接数据
-
连接介绍
多个数据串联在一起,形成新数据,这一过程,便是连接
-
简单连接
# 导包 import pandas as pd # 导入数据 pad = pd.read_csv('data.csv') pad2 = pd.read_csv('data2.csv') pad3 = pd.read_csv('data3.csv') # 连接数据 在这里需要使用到concat()方法来实现连接操作 result = pd.concat([pad,pad2,pad3]) # 打印输出 print(result)
打印结果:
-
结论
在上述结果中可知,将多个文件进行串联在一起,并以垂直方式展示,(请注意看行索引)
-
DataFrame 与Series连接(concat方法默认是添加行,Series数据没有行索引,会自动创建,空值会以NaN填充)
-
代码实现
# 创建一个变量用来接收Series对象 n_sr = pd.Series(['北','上','广','深']) # DataFrame与Series进行连接 result = pd.concat([pad,n_sr]) # 打印输出 print(result)
打印结果:
-
结论
同上述打印输出方式同理,也是垂直性串联,若数据中与空值,会以NaN进行填充
-
DataFrame和Series连接 改变列表名--行操作
-
代码实现
# 创建一个变量用来接收DataFrame对象 new_df = pd.DataFrame([['天','南','西','河']],columns = ['E','F','G','H'] ) # 行链接 result = pd.concat(([pad,new_df])) # 打印输出 print(result)
-
打印结果:
结论
同上述打印输出方式同理,也是垂直性串联,若数据中与空值,会以NaN进行填充,并新增4列,给定指定值
-
append函数--行操作
-
在concat中,是可以连接多个对象的,只需要通过追加对象即可,可通过append来实现
-
代码实现
# 定义一个变量接收结果 result =(pad.append(pad2)) # 打印输出 print(result)打印结果:
-
-
重置索引---行操作
在将多个文件串联在一起,索引都不一样,现通过重置方式,进行索引值为有序,在这里需要实现,则仅仅只需要在连接后面加上:ignore_index = True即可,主要作用就是忽略掉DataFrame索引。
-
代码实现
# 进行多文件连接 result = pd.concat([pad,pad2,pad3],ignore_index=True) # 打印输出 print(result)
-
打印结果:
-
concat 实现列操作
与行操作基本一致,仅仅在连接位置多了一个:axis ,默认值为index,按行添加,传入参数为 axis = (列)
-
代码示例
# 连接多个文件,且以列方式连接 result = pd.concat([pad,pad2,pad3],axis=1) # 打印输出 print(result)
-
打印结果:
-
结论:axis = 1 ,表示在第一个文件内容后面直接新增,并是以列方式
-
在列末尾新增一列 通过:dataFrame['新增列名'] = ['值']
-
代码实现
# 连接多个文件,且以列方式连接 result = pd.concat([pad,pad2,pad3],axis=1) # 添加列 直接给DataFrame添加列,格式为: dataFrame[列名] = [列数据] result['New_list'] =['aa','bb','cc','dd'] # 打印输出 print(result)
-
打印结果:
-
通过DataFrame[’列名‘] = Series对象
- 代码实现
# 连接多个文件,且以列方式连接
result = pd.concat([pad,pad2,pad3],axis=1)
# 通过 DataFraem[’列名‘] = pd.Series([‘数据‘])
result['New_sr'] =pd.Series(['aaa','bbb','ccc','ddd'])
# 打印输出
print(result)
打印结果:
-
重置列索引
上述效果中,在列名位置,出现很多重复性列名,现将其设置为索引方式展示,且是顺序
-
代码实现
# 连接文件,通过axis修改列,通过ignore_index = True 重置,默认为false,不重置 result = pd.concat([pad,pad2,pad3],axis='columns',ignore_index=True) # 打印输出 print(result)
-
打印结果: