添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


一、DataFrame去重

#去除某几列重复的行数据。'A','B'相同,则删除重复行,保留第一个。keep参数可以为first、last和False(不保留)
df.drop_duplicates(subset=['A','B'],keep='first',inplace=True)
#去除完全重复的行数据。保留第一个
df.drop_duplicates(keep='first',inplace=True)

二、DataFrame列重命名

df.rename(columns={'原列名':'新列名', '原列名':'新列名'},inplace=True)

三、打乱DataFrame数据顺序

#方法一:
from sklearn.utils import shuffle
df = shuffle(df)
#方法二:
#参数frac是要返回的比例。frac=0.3,表示抽样30%的样本;
#reset_index(drop=True)。表示打混后数据集的index(索引)还是按照正常的排序
df.sample(frac=1).reset_index(drop=True)

四、merge,concat用法与区别

import pandas as pd
import numpy as np
from pandas import DataFrame,Series
data1=pd.DataFrame(np.arange(6).reshape(2,3),columns=list('abc'))
data2=pd.DataFrame(np.arange(2,8).reshape(2,3),columns=list('ayz'))

data1: data2:

dataframe删除重复值 python dataframe删除重复列_多对多

dataframe删除重复值 python dataframe删除重复列_多对一_02

1、concat

按列拼接

data=pd.concat([data1,data2],axis=1)

dataframe删除重复值 python dataframe删除重复列_重命名_03


按行拼接

data=pd.concat([data1,data2],axis=0)

dataframe删除重复值 python dataframe删除重复列_多对多_04

2、merge

(1)参数how:

inner:拿出的是两边都有的值。返回的结果是左右列的交集
outer:将 left、right的数据结合, 所有的行和列都拿出来,哪边缺失,就补充nan。返回的结果是左右列的并集
left:按照left的dataframe为基准,右边值为空的话就默认nan。返回的结果只包含左列
right:按照right的dataframe为基准,左边值为空的话就默认nan。返回的结果只包含右列

(2)参数on:

key:代表在那几列上进行merge

data=pd.merge(data1,data2,how='inner',on='left')

(3)重命名:

data3 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'rank': [1, 2, 3, 4]})
data4 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'rank': [3, 1, 4, 2]})
#pd.merge(data3 , data4 , on='name', how='left')
pd.merge(data3 , data4 , on='name', how='left', suffixes=['_L', '_R'])

dataframe删除重复值 python dataframe删除重复列_重命名_05

dataframe删除重复值 python dataframe删除重复列_多对一_06

(4)merge的三种操作:

  • 一对一:
data5 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
                    'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
data6 = pd.DataFrame({'name': ['Bob', 'Jake', 'Jake','Sue'],
                    'hire_date': [2014, 2016, 2019, 2020]})
pd.merge(data5,data6)

dataframe删除重复值 python dataframe删除重复列_多对一_07

  • 多对一:在需要连接的两个列中,有一列的值有重复。通过多对一连接获得的结果DataFrame将会保留重复值
data7 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
                      'group': ['Accounting', 'Engineering', 'Engineering', 'HR']
                     ,'hire_date': [2014, 2016, 2019, 2020]})
data8 = pd.DataFrame({'group':['Accounting', 'Engineering', 'HR'],
                      'supervisor': ['Carly', 'Guido', 'Steve']})
pd.merge(data7,data8)

dataframe删除重复值 python dataframe删除重复列_重命名_08

  • 多对多:如果左右两个输入的共同列都包含重复值,那么合并的结果就是一种多对多连接
data9 = pd.DataFrame({'name': ['Bob', 'Jake', 'Lisa', 'Sue'],
                      'group': ['Accounting', 'Engineering', 'Engineering', 'HR']})
data10 = pd.DataFrame({'group':['Accounting', 'Accounting', 'Engineering','Engineering', 'HR', 'HR'],
                      'skills': ['math', 'spreadsheets', 'coding', 'linux', 'spreadsheets', 'organization']})
pd.merge(data9,data10)

dataframe删除重复值 python dataframe删除重复列_重命名_09

(5)merge几点说明

  • pd.merge()方法会自动寻找两个DataFrame中相同的列,并自动以这列作为键进行排列。
  • 共同列中元素的位置可以是不一致的,pd.merge()方法能够自动选中相同的行进行连接。
  • pd.merge()默认会丢弃原来的索引,重新生成索引。