判断文件是否存在,以及复制文件pandas 判断某一列的规则pandas 中 series 转换为 dataframepandas读取excel文件的两种方式dataframe 与列表运算获取某月的第一天和最后一天的日期pandas删除重复值*drop_duplicates*
判断文件是否存在,以及复制文件
import osimport shutil# 判断文件是否存在if not os.path.exists('C:\Users'): # 复制文件,类似于 cp 命令shutil.copyfile(path1, path2)
# df第一列的字符串不以4开头df.iloc[:,0].str.match('[^4]')
# 以下两个的结果是一样的。df.iloc[:,0].to_frame()df.iloc[:,[0]]# 可用在,必须使用df的情况下df_sum = df.sum(axis=1).to_frame()
path = "./test.xlsx"# 方式一:pd.read_exceldf = pd.read_excel(path, sheet_name=0, header=0, index_col=None, usecols=None, skiprows=None, nrows=None)'''pd.read_excel参数:path:文件路径/str, bytes, ExcelFile, xlrd.Book, path object, or file-like objectsheet_name:可以是sheet名,也可以第几个sheet。header:设置列名索引(从0开始)index_col:设置索引(从0开始)usecols:选择你需要的列,比如"a:d"(a到d,包括a和d),"a,b"skiprows:忽略行数,可以用header来做,一般不用nrows:选择你需要的条数,比如10,就会读取10条数据返回值:dataframe它会直接读取数据'''# 方式二:pd.ExcelFiledf_e = pd.ExcelFile(path)'''pd.ExcelFile参数:path:文件路径返回值:ExcelFile对象它会将excel表解析为dataframe对象,若想读取数据,需要调用parse方法'''sheet_name = df_e.sheet_names# 返回excel表中所有的sheet名df_e.parse(sheet_name=0, header=0, index_col=None, usecols=None, skiprows=None, nrows=None)'''df_e.parse方法是读取ExcelFile对象中某个sheet表的值,其中的参数和read_excel方法中的参数的含义一样。返回值:dataframe'''
两种读取excel的方式怎么选?
一般情况下,确定读取表中的数据,就使用read_excel。
如果一个表中有多个sheet工作薄都要读取,可以使用pd.ExcelFile,还可以返回相对应的sheet名,防止读取数据时sheet名出错。
read_excel也可以返回所有都sheet名,需要将sheet_name设置为None,返回是一个大字典,字典的键就是sheet_name,值为对应的整个sheet的数据。这样有一个缺点,就是不能分别设置不同sheet读取方式,必须读取出来再处理,比较麻烦。
dataframe 与列表运算
df = pd.Dataframe([[1,2],[3,4]])# dataframe 与列表运算df*[0.1, 0.2]'''输出: 0 10 0.1 0.41 0.3 0.8列表会和dataframe每一行做运算'''#dataframe 插入列df.insert(0,'1',2)'''在0的位置,插入一列,命名为'1',值为2'''
获取某月的第一天和最后一天的日期
import datetimeimport calendar# 2021年1月1日month_s = datetime.datetime(2021, 1, 1)# 获取某年某月的天数num = calendar.monthrange(month_s.year, month_s.month)[1]# 2021年1月最后一天month_e = datetime.datetime(month_s.year, month_s.month, num)
pandas删除重复值drop_duplicates
df.drop_duplicates(subset=None, keep='first', inplace=False)'''参数解释:subset:列标签或标签序列,可选, 默认使用所有列keep:选项有{'first','last',False},默认'first'- first:保留第一次出现的重复项- last:删除重复项,除了最后一次出现- false:删除所有重复项inplace:是否替换原数据,默认是生成新的对象'''