pandas高频使用语句——从excel出发

import pandas as pd
#加载pandas包

#假设df1有唯一主键'id','Nbr'和'sku'也可以对应唯一值
df1 = pd.read_excel('文件路径',sheet_name = '表格名',use_columns = '读取指定列,提高后续效率',
                    skip_rows = 1, #跳过读取的行数,一般用作跳过表头的备注
                    dtype = {'列名':float}    #指定列的数值类型)

#df2为df1的补充数据,唯一主键为id,'Nbr'和'sku'也可以对应唯一值
df2 = pd.read_excel('文件路径',sheet_name = '表格名',use_columns = '读取指定列,提高后续效率',
                    skip_rows = 1, #跳过读取的行数,一般用作跳过表头的备注
                    dtype = {'列名':float})

#对根据df1中的指定列,对比df2中的指定列的值,并拼接剩余的数据
#类似excel中xlookup的功能
df_xlookup = pd.merge(df1,df2,on='A',how = 'left')
#how = 有三个参数,‘left’查找失败时保留左侧的值,‘right’保留右侧值,‘inner’只保留匹配成功的序列
#相当于excel中=xlookup('df1中A列的单元格','df2中的A列','返回df2中的剩余列',0,0)

'''
若定期更新的excel文件中的格式不变,列名变化,如9月传入的数据,列名为'A','B','C',
而10月的列名为'D','E','F',此时可根据列序数的列名读取工作表中的指定列
'''

update_col = df1.columns    #读取df1中所有的列名,并返回list
df1[update_col[1]]    #读取列序数为2的列

#增加新的列
df1.insert(loc=12,#插入第13列,column = '列名',value = '预设值')

#修改新添加的列中的数据类型
df1.[['新增加的列名']] = df1[['新增加的列名']].astype(int)

#修改新添加的列的列名
df1 = df1.rename(column = {'原来的列名','新列名'})

#筛选指定列中的指定值
df1 = df1[df1['列名']=='条件值'] #法1,根据单个值匹配
df1 = df1[df1[].isin(list)]    #法2,根据list中的值进行匹配

#将df中的指定列转换为list对象
list = df1['列名'].tolist()

#遍历dataframe中的每一行,比较两列的值,并将比较结果输出在另一列
for index,row in df1.iterrows():
    if df1.at[index,'A'] > df1.at[index,'B']:
        o_p3m.at[index,'比较结果'] = '大'
    else:
        o_p3m.at[index,'比较结果'] = '等于或小于'

#dataframe写入excel
columns_to_write = ['A']
df_to_write = o_p3m[columns_to_write]  #指定写入列

inventory_management = load_workbook('写入表.xlsx')    #读取写入表
sheet1 = inventory_management['Sheet1']  #选择表sheet1
startrow = sheet1.max_row + 1 if sheet1.max_row > 0 else 1    #计算数据的起始行为已有数据的下一行
for row in df_to_write.itertuples(index=False, name=None):
    sheet1[f"A{startrow}"] = row[0]  #A{startrow}为写入A列,row[0]为指定写入列中的第一列数据
    startrow += 1 #写入数据
inventory_management.save('库存周转计算表.xlsx')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值