DataFrame 拼接,筛选,修改

 

lc.loc[lc["column_name"] == "valueb","column_b"]=6

筛选列column_name 值为valueb的那行数据,修改列column_b值为6

 

DataFrame数据拼接

 

pd.merge()

融合的意思,直接融合,数据不能融合进来,不能直接用,需要家outer参数
 

a=pd.DataFrame({'a':[1,2,3],'b':[2,3,4]})
b=pd.DataFrame({'a':[11,22,33],'c':[22,33,44]})
c=pd.merge(a,b)
  • 通过验证发现,a和b的同名列表被合并,但是都是空说明默认连接形式是内连接,及二者默认把相同列名作为查找的条件,若是查找不到相同的值返回空。

加入连接条件

c=pd.merge(a,b,how='outer',on='a')
c
    a    b     c
0   1  2.0   NaN
1   2  3.0   NaN
2   3  4.0   NaN
3  11  NaN  22.0
4  22  NaN  33.0
5  33  NaN  44.0

由此可见pd.merge与数据库的连接形式是一致的。

pd.concat,可以用

pd.concat([a,b])
  •  
  a    b     c
0   1  2.0   NaN
1   2  3.0   NaN
2   3  4.0   NaN
0  11  NaN  22.0
1  22  NaN  33.0
2  33  NaN  44.0

和mrege不同的是cancat是真正的"连接‘’,它把a,b两个表完全拼接在一起,默认拼接形式是并集,我们可以通过修改参数来修改拼接模式,以及拼接方向,也可以重述索引。

pd.concat([a,b],axis=1)
   a  b   a   c
0  1  2  11  22
1  2  3  22  33
2  3  4  33  44
pd.concat([a,b],join='inner')
  a
0   1
1   2
2   3
0  11
1  22
2  33
d=pd.concat([a,b])
d.index=list(range(0,6))
d
   a    b     c
0   1  2.0   NaN
1   2  3.0   NaN
2   3  4.0   NaN
3  11  NaN  22.0
4  22  NaN  33.0
5  33  NaN  44.0

赋值

通过赋值语句可以使得单列数据的拼接。

e=pd.Series(list('abc'))
a['c']=e
 a  b  c
0  1  2  a
1  2  3  b
2  3  4  c
e=pd.DataFrame(list('abc'))
a['c']=e
 a  b  c
0  1  2  a
1  2  3  b
2  3  4  c

DataFrame.join

join只支持横向连接,可以认为是多列赋值,要求join的列表和原列表不能有重名
仍然使用原数据。

a.join(b)
  • 1

报错,列重叠

a.join(e)

   a  b  c  0
0  1  2  a  a
1  2  3  b  b
2  3  4  c  c
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页