Pandas的学习之路(二)

编程入门 行业动态 更新时间:2024-10-25 00:28:05

Pandas的学习<a href=https://www.elefans.com/category/jswz/34/1770107.html style=之路(二)"/>

Pandas的学习之路(二)

嗯···又来了···毕竟还没结束。

接之前的文章,写完了Series和DataFrame,接下来应该是表格的一些操作了。

目录

1、表格的连接

1.1、join操作

 1.2、merge操作(连接,可以自动匹配)

 1.3、concat(拼接)

2、表格的简单操作

 2.1、表格的简单追加

2.2、表格的行列求和


1、表格的连接

1.1、join操作

参数:

  • other:第二个Dataframe, Series,或者Dataframe中的列
  • on: 第二个DataFrame中与第一个重复的列名
  • how: (‘参数可选’left’, ‘right’, ‘outer’, ‘inner’),默认为 ‘left’,left的意思为将左边表格的索引用作连接后的索引,right同理,inner意思为取交集,如果两个表格中有同名的索引,最终显示的结果是同名索引组成的表格,outer是取并集,即为显示将左表与右表的索引全连接起来的表格
  • lsuffix: 第一个DataFrame中重复列的后缀
  • rsuffix: 第二个DataFrame中重复列的后缀
  • sort: 连接键排序,默认为False

上代码:

import pandas as pdalbum_dict = {'平凡的一天':['平凡的一天','给你给我','一荤一素'],'小王日记':['水乡','小王','呓语'],'幼鸟指南':['城市傍晚','海上日记','幼鸟指南']}
album = pd.DataFrame(album_dict)
album1 = pd.DataFrame({'平凡的一天':['消愁','盛夏','无问'],'小王日记':['东北民谣','二零三','胡同'],'幼鸟指南':['极限十七','项羽虞姬','入海']})
album.join(album1,on = None,how = 'left',lsuffix = '_left',rsuffix = '_right',sort = False)

 

错误代码:

album.join(album1,on = None)

 会引发ValueError!!!因为此时的列名重复了,两个办法:要么你把列名改了,要么加上参数lsuffix和rsuffix。

 1.2、merge操作(连接,可以自动匹配)

 参数说明:

  • left: 参与合并的左侧DataFrame
  • right: 参与合并的右侧DataFrame
  • on: 用于连接的列名,必须存在于左右两个DataFrame之中
  • how:可选参数有“inner”,”outer”,”left”,”right”,默认为”inner”
  • left_on:左侧DataFrame中用作连接键的列
  • right_on: 右侧DataFrame中用作连接键的列
  • left_index: 将左侧的行索引用作其连接键
  • right_index: 将右侧的行索引用作其连接键
  • indicator:如果为True,则将名为_merge的Categorical类型列添加到具有值的输出对象

how='left',连接方式为合并之后第一个DataFrame中与第二个DataFrame中重复的列名的列:

import pandas as pdalbum_dict = {'平凡的一天':['平凡的一天','给你给我','一荤一素'],'小王日记':['水乡','小王','呓语'],'幼鸟指南':['城市傍晚','海上日记','幼鸟指南']}
album = pd.DataFrame(album_dict)
album1 = pd.DataFrame({'平凡的一天':['消愁','盛夏','无问'],'小王日记':['东北民谣','二零三','胡同'],'幼鸟指南':['极限十七','项羽虞姬','入海']})
album2 = pd.merge(album, album1, how='left',on=['平凡的一天','小王日记'],indicator=True)
album2

 how='left',连接方式为合并之后第二个DataFrame中与第一个DataFrame中重复的列名的列:

album2 = pd.merge(album, album1, how='right',on='平凡的一天')
album2

使用left_on和right_on进行连接:

import pandas as pdresult = pd.DataFrame({'key':[0,1,2],'key1':[1,2,3],'ab':[4,5,6]})
result1 = pd.DataFrame({'key':[3,2,1],'key1':[2,1,0],'cd':[6,5,4]})final = pd.merge(result,result1,left_on='ab',right_on='cd')
final

 使用left_on和right_index=True进行连接:

import pandas as pdresult = pd.DataFrame({'key':[0,1,2],'key1':[1,2,3],'ab':[4,5,6]})
result1 = pd.DataFrame({'key':[3,2,1],'key1':[2,1,0],'cd':[6,5,4]})final = pd.merge(result,result1,left_on='ab',right_index=True)
final

会变成这个亚子,是因为此时使用了 right_index=True进行连接,这时的意思是,将右边的表的索引跟左边表格的列(例子中的是列名为ab那一列)进行关联,而由于二者没有相同元素,所以显示的差不多是个空表了。看看右边表格的索引就明白了,索引为0,1,2。

 1.3、concat(拼接)

 参数说明:

  • object:Series,DataFrame
  • axis:需要合并连接的轴,0表示行,1表示列
  • keys:选择之后可以创建多索引
  • join:可选参数为'inner'和'outer'
final = pd.concat([result,result1])
final

 使用keys参数:

final = pd.concat([result,result1],keys = ['x','y'])
final

使用axis参数:(设为1表示沿着列拼接)

final = pd.concat([result,result1], axis=1)
final

 使用join参数(就是取交集的意思):

final = pd.concat([result,result1], join='inner')
final

  

2、表格的简单操作

 2.1、表格的简单追加

追加列:

result['key3'] = result.apply(lambda x:x.sum(),axis =1)
result

result = pd.DataFrame({'key':[0,1,2],'key1':[1,2,3],'ab':[4,5,6]})
result1 = pd.DataFrame({'key':[3,2,1],'key1':[2,1,0],'cd':[6,5,4]})
result['test']=[1,2,3]

 

 追加行( ignore_index:如果为True,则将忽略源DataFrame对象中的索引):

ser = pd.Series([9,8,7], index=['key', 'key1', 'ab'])
df = result.append(ser, ignore_index=True)
df

2.2、表格的行列求和

列求和:

result.loc['key2'] = result.apply(lambda x:x.sum(),axis =0)
result

行求和:

result['key3'] = result.apply(lambda x:x.sum(),axis =1)
result

去掉表格中不想要的值:

result = pd.DataFrame({'key':[0,1,2],'key1':[1,2,3],'ab':[4,5,6]})
result1 = pd.DataFrame({'key':[3,2,1],'key1':[2,1,0],'cd':[6,5,4]})
result1[result1['cd']!=6]

 

更多推荐

Pandas的学习之路(二)

本文发布于:2024-02-13 03:49:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1690557.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:之路   Pandas

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!