python数据分析入门【二】 您所在的位置:网站首页 19号台风路径最新消息图片 python数据分析入门【二】

python数据分析入门【二】

2024-01-12 19:24| 来源: 网络整理| 查看: 265

python数据分析入门【二】 — 数据处理

上一章内容python数据分析入门【一】 — DataFrame & Series

下一章内容python数据分析入门【三】 — 数据分析

文章目录 python数据分析入门【二】 --- 数据处理1、数据导入和导出1.1 数据的导入1)一般方式导入文件2)导入csv文件3)导入文本文件4)导入excel文件(后缀xlsx) 1.2 数据的导出1)导出csv/txt文件2)导出xlsx文件 2、值处理A、重复值处理2.1 用duplicated()找出重复位置1)找出行的重复位置2)根据列,找出重复位置 2.2 用drop_duplicates()删除重复值1)根据行重复值进行删除2)通过指定列,删除重复值 2.3 向量化计算提取重复值 B、缺失值处理2.1、缺失值的产生和处理方法2.2、用 isnull() 找到空值位置2.3、获取空值所在的行1)默认所有列2)指定判断空值的列 2.4、用 fillna() 填充空值2.5、用 dropna() 删除空值所在的行 C、空格值处理2.1、用str.strip()处理某一列的空格值2.2、将处理好的数据放回原列 3、字段处理A、字段抽取3.1、用Series.astype()转换数据类型3.2、用str.slice()字段抽取 B、字段拆分3.1、用split()拆分得到DataFrame3.2、用split()拆分得到Series C、字段合并D、字段匹配3.1、用pd.merge()左连接3.2、用pd.merge()右连接3.3、用pd.merge()外连接 4、记录处理A、记录抽取4.1、比较运算4.2、范围运算4.3、空值匹配4.4、根据关键字过滤 B、随机抽样4.1、按个数抽样4.2、按百分比抽样4.3、可放回的抽样4.4、分层抽样 C、记录合并4.1、数据框结构相同时的合并4.2、数据框结构不同时的合并 5、其余操作A、简单计算B、数据标准化C、数据分组5.1、用df.groupby()按字段值分组(定性分组)5.2、用pd.cut按区间分组(定量分组)5.3、用pd.cut按区间自定义标签分组(定量分组) D、时间处理5.1、用to_datetime()时间转换5.2、用dt.strftime()格式化时间5.3、用dt.xx抽取时间属性 E、时间抽取5.1、时间处理5.2、按索引抽取5.3、按时间列(dateTime)抽取 6、虚拟变量6.1、Series.map()处理有大小关系的离散变量6.2、pd.get_dummies()处理无大小关系的离散变量

1、数据导入和导出 1.1 数据的导入 1)一般方式导入文件

用python内置的open()和read(),缺点是不能对数据按格式划分,并封装成可计算的对象

data = open('E://python//数据集//数据分析入门//1.csv').read()

在这里插入图片描述

在这里插入图片描述

2)导入csv文件

使用pd.read_csv(),如果存在中文路径会报错,此时使用open()打开文件即可(参考https://blog.csdn.net/qq_35318838/article/details/80564938)。得到的数据会被封装成DataFrame对象

pd.read_csv()默认分隔符是’,’

from pandas import read_csv # 这样读文件会报错:OSError: Initializing from file failed # df = read_csv( # 'E://python//数据集//数据分析入门//1.csv' # ) df = read_csv(open('E://python//数据集//数据分析入门//1.csv'))

在这里插入图片描述

pd.read_csv()修改分隔符seq,并修改列名names

df4 = read_csv( open('E://python//数据集//数据分析入门//4.11 字段合并/data.csv'), names=['brand','area','num'], sep=' ' ) 3)导入文本文件

注意文本文件一上来就是数据,没有表头,所以要设置列名,并设置分隔符。

"""用read_table导入文本文件(文本文件一上来就是数据,没有表头)""" from pandas import read_table df1 = read_table(open('E://python//数据集//数据分析入门//1.txt')) df2 = read_table( open('E://python//数据集//数据分析入门//1.txt'), #设置列名 names=['name', 'age', 'gender'], #分隔符 sep=',' )

在这里插入图片描述

在这里插入图片描述

4)导入excel文件(后缀xlsx)

​ 对于导入文件编码错误问题,可以用encoding指定编码格式

from pandas import read_excel df3 = read_excel( 'E://python//数据集//数据分析入门//1.xlsx', #不设置编码格式,会报错:UnicodeDecodeError: 'gbk' codec can't #decode byte 0x90 in position 22: illegal multibyte sequence encoding='UTF-8' )

在这里插入图片描述

1.2 数据的导出 1)导出csv/txt文件

​ 用df.to_csv()导出csv,文本等文件,可以设置index=False,表示不打印索引列(没有to_table())

"""D:用to_csv导出csv,文本,xlsx等文件""" from pandas import DataFrame DataFrame.to_csv() df.to_csv( 'E://python//数据集//数据分析入门//2.csv', #不打印索引列 index=False ) df2.to_csv('E://python//数据集//数据分析入门//2.txt')

在这里插入图片描述 在这里插入图片描述

2)导出xlsx文件

​ 用df.to_xlsx()导出csv,文本等文件,可以设置index=False,表示不打印索引列

df3.to_excel('E://python//数据集//数据分析入门//2.xlsx',encoding='UTF-8')

在这里插入图片描述

2、值处理

值处理包括:重复值,缺失值,空格值的处理

A、重复值处理 import pandas as pd df = pd.read_csv( open(r"E://python/数据集/数据分析入门/data.csv") ) df4 = pd.DataFrame(df)

在这里插入图片描述

2.1 用duplicated()找出重复位置 1)找出行的重复位置

duplicated()不指定列,则对行(所有列)进行重复值位置查找

"""找出行的重复位置""" # 得到重复行的索引系列 dIndex = df4.duplicated()

在这里插入图片描述

2)根据列,找出重复位置 """根据某些列,找到重复的位置""" dIndex = df4.duplicated("id")

在这里插入图片描述 在这里插入图片描述

dIndex = df4.duplicated(["id","name"])

根据返回值,把重复数据提取出来 df[dIndex]

2.2 用drop_duplicates()删除重复值 1)根据行重复值进行删除 """用drop_duplicate(),直接删除重复值(会保留唯一一条数据)""" # 默认根据所有的列,进行删除(数据结构中,行相同的数据只保留一行) newDF = df4.drop_duplicates()

在这里插入图片描述

2)通过指定列,删除重复值 newDF1 = df4.drop_duplicates(["id","name"])

在这里插入图片描述

2.3 向量化计算提取重复值

​ 对于boolean类型的一维数组A,可以根据A,利用向量化计算,提取重复值数据。

dIndex = df4.duplicated(["id","name"]) """根据返回值,把重复数据提取出来""" df[dIndex] --- Out[38]: id name age gender 3 1251147 wang2 22 male 5 1251147 wang2 22 female B、缺失值处理 2.1、缺失值的产生和处理方法

缺失值的产生:

有些信息暂时无法获取有些信息被遗漏或者错误处理了(年龄那一列要求是数字,但是填入了‘a’,‘b’)

缺失值的处理方法:

数据补齐(填充平均值)删除对应缺失行(数据量少慎用)删除对应缺失行不处理 2.2、用 isnull() 找到空值位置 from pandas import read_csv df = read_csv( open(r"E:\python\数据集\数据分析入门\4.4 缺失值处理\data.csv") ) """A:找出空值的位置,空值位置显示true""" isNA = df.isnull()

在这里插入图片描述

在这里插入图片描述

2.3、获取空值所在的行 1)默认所有列 from pandas import DataFrame isNa = DataFrame(isNA) """B:获取空值所在的行(对于所有列来说)""" #Return whether any element is True over #requested axis. #说白了,判断所有列,如果某一列存在一个true值,则该行返回true #如果全为false,则返回false df[isNa.any(axis = 1)] --- Out[9]: id key value 2 1251147 商品毛重 NaN 3 1251147 NaN 中国 2)指定判断空值的列 """C:获取某一列含有NA值的行""" #注意Dataframe如何访问单列/多列,如果是[[]],即里面是series的话,输出会保留列名; #如果是[],输出不会保留列名; #如果使用单列1访问,则会报:ValueError: No axis named 1 for #object type df[isNa[['key']].any(axis = 1)] --- Out[10]: id key value 3 1251147 NaN 中国 df[isNa[['key','value']].any(axis = 1)] --- Out[11]: id key value 2 1251147 商品毛重 NaN 3 1251147 NaN 中国 2.4、用 fillna() 填充空值 '''D:填充空值''' df.fillna('未知') --- Out[12]: id key value 0 1251147 品牌 Apple 1 1251147 商品名称 苹果iPad mini 3 2 1251147 商品毛重 未知 3 1251147 未知 中国 4 1251147 硬盘 128G 5 1251147 尺寸 7.8英寸-9英寸 2.5、用 dropna() 删除空值所在的行 '''E:删除空值所在的行(不是在原数据上删除)''' newDF = df.dropna() newDF --- Out[14]: id key value 0 1251147 品牌 Apple 1 1251147 商品名称 苹果iPad mini 3 4 1251147 硬盘 128G 5 1251147 尺寸 7.8英寸-9英寸 C、空格值处理 2.1、用str.strip()处理某一列的空格值 from pandas import read_csv from pandas import Series from pandas import Index df = read_csv( open(r"E:\python\数据集\数据分析入门\4.5 空格值处理\data.csv") ) --- '''一列可作为Series,会自动添加缺失的索引''' # Vectorized string functions for Series and Index # 该语法会报错:Series s = df['name'] # 也不能作为索引:Index index = df['name'],语法会报错 '''注意Python对象类型转换和java的区别''' s = Series(df['name']) type(df['name']) # pandas.core.series.Series

在这里插入图片描述

'''A:处理某一列的空格值''' #'DataFrame' object has no attribute 'str' # 注意DataFrame.str不存在,而Series.str存在 '''处理左空格''' newName = df['name'].str.lstrip() --- Out[18]: 0 KEN 1 JIMI 2 John '''处理右空格''' newName1 = df['name'].str.rstrip() --- Out[23]: 0 KEN 1 JIMI 2 John '''处理左右空格''' newName2 = df['name'].str.strip() --- Out[25]: 0 KEN 1 JIMI 2 John 2.2、将处理好的数据放回原列 '''B:将处理好的数据放回原来的列''' df['name'] = newName2

在这里插入图片描述

3、字段处理 A、字段抽取

字段抽取:

根据已知列数据的开始和结束位置,抽取出新的列。例如对于电话号:138 0013 8000,其中138是运营商,0013是地区,8000是号码 from pandas import read_csv from pandas import Series df = read_csv( open(r"E:\python\数据集\数据分析入门\4.6 字段抽取\data.csv") ) type(df.at[0,'tel']) --- Out[35]: numpy.int64

在这里插入图片描述

3.1、用Series.astype()转换数据类型 # Cast a pandas object to a specified dtype dtype. Series.astype() '''A:用Series.astype(),将电话号转成字符串''' df['tel'] = df['tel'].astype(str) type(df.at[0,'tel']) --- Out[37]: str 3.2、用str.slice()字段抽取 # 运营商 brand = df['tel'].str.slice(0,3) # 地区 area = df['tel'].str.slice(3,7) # 号码段 nums = df['tel'].str.slice(7,11) #赋值回去 df['brand'] = brand df['area'] = area df['nums'] = nums

在这里插入图片描述

B、字段拆分

字段拆分:按照固定的字符,拆分已有字符串

from pandas import read_csv df = read_csv( open(r"E:\python\数据集\数据分析入门\4.7 字段拆分\data.csv"), )

在这里插入图片描述

3.1、用split()拆分得到DataFrame # ============================================================================= # split(sep,n,expand=False) # 参数说明: # sep用于分割的字符串, # n分割为多少列, # expand为true,则返回DataFrame # expand为false,则返回Series # ============================================================================= # 1表示将数据分割成2列,返回值为DataFrame newDF = df['name'].str.split(' ', 1, True) #依次修改DataFrame的列名 newDF.columns = ['band','name']

在这里插入图片描述

3.2、用split()拆分得到Series newDF1 = df['name'].str.split(' ', 2, False)

在这里插入图片描述

C、字段合并

字段合并:指将同一个数据框中的不同的列,进行合并,形成新的列(字段拆分的逆操作)

# 字段合并方法:x1 + x2 + x3,合并后返回一个Series df4 = read_csv( open('E://python//数据集//数据分析入门//4.11 字段合并/data.csv'), names=['brand','area','num'], sep=' ' )

在这里插入图片描述

注意先将Int64转化成str,才能进行字段合并(字符串加法)

# 注意先将Int64转化成str,才能进行字段合并 # data1 = df4['brand'] + df4['area'] + df4['num'] # Cast a pandas object to a specified dtype ``dtype`` df4 = df4.astype(str) data1 = df4['brand'] + df4['area'] + df4['num'] df4['tel'] = data1

在这里插入图片描述

D、字段匹配

字段匹配:根据各表共有的关键字段(eg:id字段,且数据类型一致),把各表所需的记录一一对应起来,组成一条新的记录

from pandas import read_csv import pandas as pd df1 = read_csv( open('E://python//数据集//数据分析入门//4.12 字段匹配/data1.csv'), names=['id','comments','title'], sep='|' ) df2 = read_csv( open('E://python//数据集//数据分析入门//4.12 字段匹配/data2.csv'), names=['id','oldPrice','nowPrice'], sep='|' )

在这里插入图片描述 在这里插入图片描述

3.1、用pd.merge()左连接 # ============================================================================ # merge(x,y,left_on,right_on) # x:第一个数据框 # y:第二个数据框 # left_on:第一个数据框用于匹配的列(共同字段名,不是Series) # right_on:第二个数据框用于匹配的列(共同字段名,不是Series) # 返回DataFrame # ============================================================================ data1 = pd.merge( left = df1, right= df2, left_on = 'id', right_on= 'id', how = "left" )

在这里插入图片描述

3.2、用pd.merge()右连接 '''B:右连接,即使连接不上,也保留右边没连上的部分''' data2 = pd.merge( left = df1, right= df2, # left_on = df1['id'], # right_on= df2['id'], left_on='id', right_on='id', how = "right" )

在这里插入图片描述

3.3、用pd.merge()外连接 '''C:外连接,即使连接不上,也保留没连上的部分''' data3 = pd.merge( left = df1, right= df2, # left_on = df1['id'], # right_on= df2['id'], left_on='id', right_on='id', how = "outer" )

在这里插入图片描述

4、记录处理 A、记录抽取

记录抽取:指根据一定的条件,对数据进行抽取

from pandas import read_csv import pandas as pd df = read_csv( open(r"E:\python\数据集\数据分析入门\4.8 记录抽取\data.csv"),sep='|' )

在这里插入图片描述

4.1、比较运算 '''A:比较运算''' df1 = df[df['comments'] > 10000] df2 = df[df.comments > 10000]

结果都是 在这里插入图片描述

4.2、范围运算 '''B:范围运算''' df3 = df[df.comments.between(1000,10000)]

在这里插入图片描述

'''也可以是组合的逻辑运算(结果同上)''' df7 = df[(df.comments > 1000) & (df.comments 1: 0.2, 2: 0.4, 3: 0.6 } def typicalSampling1(group,typicalFracDict): name = group.name frac = typicalFracDict[name] return group.sample(frac = frac) result2 = df.groupby( 'class', #不将组键(键值对)添加到索引,而是将值添加到索引 group_keys = True ).apply(typicalSampling1,typicalFracDict)

在这里插入图片描述

C、记录合并

记录合并:指将两个结构相同的数据框,合并成一个数据框

from pandas import concat from pandas import read_csv #seq默认为, df = read_csv( open('E://python//数据集//数据分析入门//4.10 记录合并/data1.csv'), sep='|' ) df1 = read_csv( open('E://python//数据集//数据分析入门//4.10 记录合并/data2.csv'), sep='|' ) df2 = read_csv( open('E://python//数据集//数据分析入门//4.10 记录合并/data3.csv'), sep='|' )

在这里插入图片描述

4.1、数据框结构相同时的合并 '''A:数据框结构相同时合并''' # ============================================================================= # concat参数是一个DataFrame或Series的列表 # objs : a sequence or mapping of Series, DataFrame, or Panel objects # ============================================================================= data = concat([df,df1,df2])

在这里插入图片描述

4.2、数据框结构不同时的合并 '''B:数据框结构不同时,先进行列的筛选再合并(为筛选的列填空值)''' data = concat([ df[['id','comments']], df1[['comments','title']], df2[['id','title']] ])

在这里插入图片描述

5、其余操作 A、简单计算

简单计算:指通过对已有字段进行加减乘除等运算,得到新的字段

'''A:简单计算''' df1 = pd.read_csv( open('E://python//数据集//数据分析入门//4.13 简单计算/data.csv'), sep='|' ) df1['totalPrice'] = df1['price'] * df1['num']

在这里插入图片描述

B、数据标准化

数据标准化:指将数据按比例缩放,使之落入到特定区间,方便不同变量的比较关系:聚类分析,主成分分析等。

0-1标准化(方便十分制,百分制的换算): $ x^* = \frac{x - min}{max -min}$

'''B:数据标准化''' df2 = pd.read_csv( open('E://python//数据集//数据分析入门//4.14 数据标准化/data.csv'), sep=',' )

在这里插入图片描述

'''0-1标准化(保留2位小数)''' df2.score = round( (df2.score - df2.score.min()) / (df2.score.max() - df2.score.min()), 2 )

在这里插入图片描述

C、数据分组

数据分组:根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间进行研究,以揭示其内在的联系和规律性。

在这里插入图片描述

5.1、用df.groupby()按字段值分组(定性分组) import pandas as pd import numpy as np df1 = pd.read_csv( open('E://python//数据集//数据分析入门//5.2 分组分析/data.csv'), sep=',' )

在这里插入图片描述

df2 = df1.groupby("class") --- df2.groups --- Out[26]: {'一班': Int64Index([0, 1, 2, 3, 4], dtype='int64'), '三班': Int64Index([9, 10, 11, 12], dtype='int64'), '二班': Int64Index([5, 6, 7, 8], dtype='int64')} df3 = df1.groupby(by = ['class','name']) df3.groups --- Out[27]: {('一班', '朱凤'): Int64Index([1], dtype='int64'), ('一班', '朱志斌'): Int64Index([0], dtype='int64'), ('一班', '许杰'): Int64Index([4], dtype='int64'), ('一班', '郑丽萍'): Int64Index([2], dtype='int64'), ('一班', '郭杰明'): Int64Index([3], dtype='int64'), ('三班', '庄艺家'): Int64Index([12], dtype='int64'), ('三班', '方伟君'): Int64Index([11], dtype='int64'), ('三班', '方小明'): Int64Index([9], dtype='int64'), ('三班', '陈丽灵'): Int64Index([10], dtype='int64'), ('二班', '林良坤'): Int64Index([7], dtype='int64'), ('二班', '林龙'): Int64Index([6], dtype='int64'), ('二班', '郑芬'): Int64Index([5], dtype='int64'), ('二班', '黄志红'): Int64Index([8], dtype='int64')} df3['score'] --- Out[28]:

注意

用DataFrameGroupBy.groups来获取分组记录用DataFrameGroupBy['name']来获取分组的某一列,方便对分组后的该列进行统计分析 5.2、用pd.cut按区间分组(定量分组) # ============================================================================= # cut(series,bins,right=True,labels=NULL) # series 需要分组的数据 # bins 分组的划分数组 # right 分组的时候,右边是否闭合 # labels 分组的自定义标签,可以不自定义 # ============================================================================= df3 = pd.read_csv( open('E://python//数据集//数据分析入门//4.15 数组分组/data.csv'), sep='|' ) bins = [ min(df3.cost) - 1,20,30,40,50,60,max(df3.cost) + 1 ] # 区间右边不闭合 df3['cut'] = pd.cut( df3.cost, bins, right=False )

在这里插入图片描述

5.3、用pd.cut按区间自定义标签分组(定量分组) labels = [ '20以下','20到30','30到40','40到50','50到60','60以上' ] df3['cut1'] = pd.cut( df3.cost, bins, right = False, labels = labels )

在这里插入图片描述

D、时间处理 时间转换:指将字符型的时间格式数据,转换成为时间型数据的过程时间格式化:将时间型数据,按照指定格式,转为字符型数据时间属性抽取:指从日期格式里面,抽取出需要的部分属性 5.1、用to_datetime()时间转换 '''1、时间转换''' df4 = pd.read_csv( open('E://python//数据集//数据分析入门//4.16 时间处理/data.csv'), sep=',' ) dateTime = pd.to_datetime( df4['注册时间'], #format为数据中的时间格式 format='%Y/%m/%d' ) df4['时间'] = dateTime type(dateTime)

在这里插入图片描述

5.2、用dt.strftime()格式化时间 '''2、时间格式化''' # 使用时间的dt属性来格式化时间 df4['格式化时间'] = df4['时间'].dt.strftime('%Y-%m-%d')

在这里插入图片描述

5.3、用dt.xx抽取时间属性 '''3、时间属性抽取''' # 使用时间的dt属性来抽取年,月,日... df4['年'] = df4['时间'].dt.year df4['月'] = df4['时间'].dt.month df4['周'] = df4['时间'].dt.week df4['日'] = df4['时间'].dt.day df4['时'] = df4['时间'].dt.hour df4['分'] = df4['时间'].dt.minute df4['秒'] = df4['时间'].dt.second E、时间抽取

时间抽取:指根据一定的条件,对时间格式的数据进行抽取

根据索引进行抽取根据时间列进行抽取 import pandas as pd '''时间抽取''' df1 = pd.read_csv( open('E://python//数据集//数据分析入门//4.17 时间抽取/data.csv'), sep=',' )

在这里插入图片描述

5.1、时间处理 # ============================================================================= # @classmethod # def strptime(cls, date_string, format): # 'string, format -> new datetime parsed from a string (like time.strptime()).' # import _strptime # return _strptime._strptime_datetime(cls, date_string, format) # ============================================================================= dateParser = lambda date : pd.datetime.strptime( # date是每一次遍历的对象,不能用df1.date, # date_string = date, format = "%Y%m%d" 会出现TypeError: strptime() takes no keyword arguments date,"%Y%m%d" ) #是一个function对象 type(dateParser) --- function # ============================================================================= # pd.read_csv # date_parser : function, default None # Function to use for converting a sequence of string columns to an array # of datetime instances. The default uses dateutil.parser.parser to do the # conversion. Pandas will try to call date_parser in three different ways, # advancing to the next if an exception occurs: 1) Pass one or more arrays # (as defined by parse_dates) as arguments; 2) concatenate (row-wise) the # string values from the columns defined by parse_dates into a single array # and pass that; and 3) call date_parser once for each row using one or more # strings (corresponding to the columns defined by parse_dates) as arguments. # # parse_dates : boolean or list of ints or names or list of lists or dict, default False # boolean. If True -> try parsing the index. # list of ints or names. e.g. If [1, 2, 3] -> try parsing columns 1, 2, 3 each as a separate date column. # list of lists. e.g. If [[1, 3]] -> combine columns 1 and 3 and parse as a single date column. # dict, e.g. {'foo' : [1, 3]} -> parse columns 1, 3 as date and call result 'foo' # ============================================================================= '''A:在读取文件时,将str类型的date列转化成dateTime类型''' '''B:并将时间列作为索引列''' df2 = pd.read_csv( open('E://python//数据集//数据分析入门//4.17 时间抽取/data.csv'), sep=',', # 日期转换的方法 date_parser = dateParser, # 要转换的日期所在的列 parse_dates = ['date','date1'], #将'date'列作为索引列(时间从小到大排序) index_col= 'date' )

在这里插入图片描述

5.2、按索引抽取 '''C:根据索引进行抽取''' import datetime dt1 = datetime.date(year=2016,month=2,day=1) dt2 = datetime.date(year=2016,month=2,day=5) #获取索引列中,dt1~dt2时间段内的数据 # ============================================================================= # Warning: Starting in 0.20.0, the .ix indexer is deprecated, # in favor of the more strict .iloc and .loc indexers. # ============================================================================= df2.ix[dt1:dt2] df2.loc[dt1:dt2] #获取dt1,dt2这两时间点的数据 df2.ix[[dt1,dt2]] 5.3、按时间列(dateTime)抽取 df3 = pd.read_csv( open('E://python//数据集//数据分析入门//4.17 时间抽取/data.csv'), sep=',' ) dt1 = datetime.date(year=2016,month=2,day=1) dt2 = datetime.date(year=2016,month=2,day=5) df3['date'] = pd.to_datetime(df1['date'],format='%Y%m%d') type(df3.at[0,'date']) --- pandas._libs.tslibs.timestamps.Timestamp type(dt1) --- datetime.date

在这里插入图片描述

# 按时间列进行记录抽取 # 如果时间格式不匹配(eg:date和dateTime比较大小),好像不能用运算符比较大小; # 但是用索引列(df.ix),即使时间格式不同,也可以比较时间 # df4 = df3[(df3.date >= dt1) & (df3.date = dt3) & (df3.date


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有