day2

1,def mysql(sql):

  cursor.execute(sql)

  jieguo=cursor.fetchall

  cols=cursor.description

  col=[]

  for v in cols:

    col.append(v[0])

  dfsql=pd.DataFrame(jieguo,columns=col)

  if dfsql.empty:

    return 'empty set'

  else:

    return dfsql

#创建mysql查询函数,链接mysql查询,输出结果为带列名的DF数据框

2, with pd.ExcelWriter('路径/.xlsx',encoding='utf8') as writer:

  df1.to_excel(writer,sheet_name='sheet名称')

  df2.to_excel(writer,sheet_name='sheet名称')

#将多个DF写入一个工作薄的不同工作表中

3, path='路径/.xlsx'

    df=pd.read_excel(path,sheet_name='sheet名')

#读取excel中指定的sheet表

4, pd.to_excel(path,index=False)

#写入excel文件时,忽略索引

5,df_empty=pd.DataFrame()

   df_empty=df_empty.append(df)

#创建一个空的DF,然后将已有的DF数据内容写入到空的DF中,可以通过循环条件写入

例子:

import numpy as np
import pandas as pd
path='C:/Users/Administrator/Desktop/hanhai/bom.xls'
path2='C:/Users/Administrator/Desktop/查询条件.xlsx'
df=pd.read_excel(path,sheet_name='BOM多级展开')
df1=pd.read_excel(path,sheet_name='素材件')
df2=pd.read_excel(path,sheet_name='辅料')
dftj=pd.read_excel(path2)
cpdm=list(dftj.产品代码)
qs=list(dftj.数量)
df_1=df[['产品代码','材料代码','材料名称','产品用量','材料单位']]
df_empty=pd.DataFrame() #创建一个空DF
for x,q in zip(cpdm,qs):  #通过zip方法把两个list合并成字典类似的可迭代结构
    df_chaxun=df_1[df_1['产品代码']==x]
    df_chaxun['产品实际用量']=df_chaxun['产品用量'].apply(lambda x:x*q)
    df_empty=df_empty.append(df_chaxun)  #循环写入空DF
print(df_empty)
df_empty.to_excel('C:/Users/Administrator/Desktop/查询结果.xlsx',encoding='utf8',index=False)

6,再说创建一个空DF然后赋值问题

import pandas as pd
import re
import math
dframe1 = pd.read_excel("window regulator分析报告数据对比源.xlsx", sheetname="Sheet1") #读取数据
dframe2 = pd.read_excel("window regulator分析报告数据对比源.xlsx", sheetname="Sheet2")#
dframe1["sku"] ="#" #添加一列数据,初始化为#

df = pd.DataFrame(columns = ["ebayno", "p_sku", "sale", "sku"]) #创建一个空的dataframe
# print(df)
sku = dframe2.sku.values
p_skus = dframe2.p_sku.values
# print(p_skus)
i = 0
for ps in p_skus :
dframe1.loc[dframe1.p_sku == ps,"sku"] = sku[i]

# print(dframe1.loc[dframe1.p_sku == ps])
df = df.append(dframe1.loc[dframe1.p_sku == ps], ignore_index=True) #忽略索引,往dataframe中插入一行数据
# print(df)
i = i + 1
# print(dframe1)
# print(sku.values) #将series变成数组
print(df)
df = df[["sku","ebayno","sale"]] #选取指定的列
df.to_csv("std.csv",encoding="gbk",index=False ) #写入到csv时,不要将索引写入index = False

 

posted @ 2019-10-09 22:41  数据--熊  阅读(159)  评论(0)    收藏  举报