单行单列的添加,用append和assign即可(append也可以把一个表加到另一个表后边)
对于大型的csv文件进行合并,字段匹配,需要用到下面的方法
一不是重点,二和三是
一、combine和update,表的填充函数
1.combine
(1)根据列均值大小填充
df1 = pd.DataFrame({'A': [1, 20], 'B': [3, 4]})
df2 = pd.DataFrame({'A': [8, 7], 'B': [6, 5]})
df1.combine(df2,lambda x,y:x if x.mean()>y.mean() else y)
输出为:
A B
0 1 6
1 20 5
(2)索引对齐特性(默认状态下,后面的表没有的行列都会设置为NaN)
df2 = pd.DataFrame({'B': [8, 7], 'C': [2, 3]},index=[1,2])
df1.combine(df2,lambda x,y:x if x.mean()>y.mean() else y)
(3)使df1符合条件的值不会被覆盖
(4)在新增匹配df2的元素位置填充-1
(5)combine_first
用df2填补df1的缺失值
2.update方法
默认左连接,第二个框的空值不会起作用
df1 = pd.DataFrame({'A': [1, 2, 3],
'B': [400, 500, 600]})
df2 = pd.DataFrame({'B': [4, 5, 6],
'C': [7, 8, 9]})
df1.update(df2)
可以在两个维度拼接,默认纵向拼接(axis=0,竖向第二个表加在第一个后边),外连接(取并集),会自动对准字段名
横向拼接加参数axis=1
内连接参数,join=‘inner’。
参数sort设置排序,默认为False,sort=True
参数verify_integrity=True检查列是否唯一
pd.concat([df3,df1],join=‘inner’)
参数key对不同csv文件加标号,便于索引
pd.concat([df1,df2], keys=['x', 'y'])
pd.concat([df1,df2], keys=['x', 'y']).index
print(pd.concat([df1,df2], keys=['x', 'y']))
A B
x 0 A0 B0
1 A1 B1
y 2 B2 A2
3 B3 A3
1.merge将两个csv文件横向合并,默认inner连接,可选left、outer、right连接
参数on,制定某列为key进行连接,比如根据表中姓名字段连接,on=“name”
pd.merge(left, right, on='name')
如果以多组键连接on=[‘name’,‘grade’]
如果进行csv文件匹配的话,我是做公交数据处理的,需要将公交站点名称加进公交站点编号的文件里边,用的是inner,key为公交线路号和公交站点号
2.join
横向拼接,默认左连接
对于many_to_one模式下的合并,往往join更为方便