python concat去除重复值语句_Python数据处理从零开始----第二章(pandas)④数据合并和处理重复值...
目錄
第二章(pandas)
Python數(shù)據(jù)處理從零開始----第二章(pandas)④數(shù)據(jù)合并和處理重復(fù)值
===============================================
數(shù)據(jù)合并
在數(shù)據(jù)處理中,通常將原始數(shù)據(jù)分開幾個部分進(jìn)行處理而得到相似結(jié)構(gòu)的Series或DataFrame對象,我們該如何進(jìn)行縱向合并它們?這時我們可以選擇用pd.concat()方式極易連接兩個或兩個以上的Series或DataFrame對象。如下是該函數(shù)的參數(shù)解讀:
pd.concat(objs, axis=0, join=’outer’, join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
參數(shù)說明:
objs:連接對象,多以列表、字典傳入
axis:軸向,0代表縱向連接,1,代表橫向連接
join:連接方式,共有’inner’,’left’,right’,’outer’
join_axes:參與連接的索引
ignore_index:是否忽略索引
keys:層次化索引
橫向連接
import pandas as pd
s1=pd.Series([1,2,3],index=list('abc'))
s2=pd.Series([3,4,5],index=list('bde'))
pd.concat([s1,s2])
Out[6]:
a 1
b 2
c 3
b 3
d 4
e 5
dtype: int64
縱向連接
pd.concat([s1,s2],axis=1)
__main__:1: FutureWarning: Sorting because non-concatenation axis is not aligned. A future version
of pandas will change to not sort by default.
To accept the future behavior, pass 'sort=False'.
To retain the current behavior and silence the warning, pass 'sort=True'.
Out[7]:
0 1
a 1.0 NaN
b 2.0 3.0
c 3.0 NaN
d NaN 4.0
e NaN 5.0
內(nèi)連接
pd.concat([s1,s2],axis=1,join='inner')
Out[8]:
0 1
b 2 3
import pandas as pd
from pandas import Series,DataFrame
dict1={
'key':['a','b','c'],
'col1':range(3)
}
df1 = DataFrame(dict1)
df1
Out[18]:
key col1
0 a 0
1 b 1
2 c 2
dict2={
'key':['b','c','d'],
'col2':range(1,4)
}
df2 =DataFrame(dict2)
df2
Out[19]:
key col2
0 b 1
1 c 2
2 d 3
dat = pd.merge(df1,df2)
dat
Out[14]:
key col1 col2
0 b 1 1
1 c 2 2
pandas默認(rèn)尋找共同的column,然后合并共同的觀測值,但是可以根據(jù),on='',和how=''來控制連接的鍵和合并的方式。
移除重復(fù)數(shù)據(jù)
首先創(chuàng)建一個數(shù)據(jù)框
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 29 01:33:46 2018
@author: czh
"""
%clear
%reset -f
# In[*]
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import os
import numpy as np
import pandas as pd
# In[*]
data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
'k2': [1, 1, 2, 3, 3, 4, 4]})
data
data.duplicated()
0 False
1 False
2 False
3 False
4 False
5 False
6 True
dtype: bool
通過以上我們發(fā)現(xiàn)最后一行(第七行)存在一個完全重復(fù)的行,一般情況下,我們需要刪除掉這行,主要通過drop_duplicates()函數(shù),該函數(shù)返回的結(jié)果是一個數(shù)據(jù)框。
data.drop_duplicates()
Out[9]:
k1 k2
0 one 1
1 two 1
2 one 2
3 two 3
4 one 3
5 two 4
這兩個方法默認(rèn)會判斷全部列,你也可以指定部分列進(jìn)行重復(fù)項判斷(一般情況下,我們希望去掉某一列重復(fù)的觀測值),假設(shè)我們還有一列值,且只希望根據(jù)k1列過濾重復(fù)項:
data['v1'] = range(7)
data
data.drop_duplicates(['k1'])
Out[10]:
k1 k2 v1
0 one 1 0
1 two 1 1
總結(jié)
以上是生活随笔為你收集整理的python concat去除重复值语句_Python数据处理从零开始----第二章(pandas)④数据合并和处理重复值...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 扣丁三国 - 技术支持
- 下一篇: 电脑技巧:盘点常用的Win组合快捷键