pandas操作excel

# 导入pandas
import pandas as pd

# 原数据信息
path_original = r"D:\Files\test\股票数据_original.xlsx".replace('\\', '/')
path_target = r"D:\Files\test\股票数据_target.xlsx".replace('\\', '/')

# 表头列表
colums_list = [
    '股票代码',
    '股票简称',
    '申购代码',
    '发行总数(万股)',
    '网上发行(万股)',
    '申购上限(万股)',
    '顶格申购需配市值(万元)',
    '发行价格',
    '发行市盈率',
    '行业市盈率',
    '申购日期',
    '中签率(%)',
    '中签号',
    '中签缴款日期',
    '上市日期',
    '打新收益(元)',
    '涨停数量'
]
# 定义表头格式
format_header_config = {
    'font_name': '宋体', # 字体
    'font_color': 'red', # 字体颜色
    'size': 10, # 字体大小
    'bold': 1, # 加粗
    'border': 1, # 边框宽度
    'align': 'center', # 水平对齐方式i
    'valign': 'vcenter', # 垂直对齐方式
    'fg_color': '#FFFF00', # 背景色
    'text_wrap': 1, # 自动换行
}
# 定义行样式
format_row_config = {
    'font_name': "宋体",
    'size': 11,
    'border': 1,
    'align': 'center',
    'valign': 'vcenter',
    'text_wrap': 1
}
# 定义首列样式
format_col_first = {
    'font_name': "宋体",
    'size': 10,
    'border': 1,
    'align': 'center',
    'valign': 'vcenter',
    'text_wrap': 1,
    'font_color': '#0070C0', # 字体颜色
    'underline': 1 # 下划线
}

# 读取数据
df_original = pd.read_excel(path_original, names=colums_list, dtype=object)
# 处理缺失值
df_original = df_original.dropna(thresh=5).fillna('-')
# 在首列生成超链接
def make_hyperlink(value):
    url = "https://www.baidu.com"
    return '=HYPERLINK("%s","%s")' % (url, value)
df_original["股票代码"] = df_original["股票代码"].apply(lambda x: make_hyperlink(str(x)))

# 创建写excel对象
writer = pd.ExcelWriter(path=path_target)
# 生成excel
df_original.to_excel(
    excel_writer=writer, 
    sheet_name="股票数据-第1页",
    index=False
)
# 选择workbook
workbook = writer.book
worksheets = writer.sheets
worksheet = worksheets["股票数据-第1页"]
# 冻结窗格
worksheet.freeze_panes(1, 2)
# worksheet.set_row(0, height=40, cell_format=format_header)
worksheet.set_column('A:Q', 12) # 设置列宽
# 设置表头格式
format_header = workbook.add_format(format_header_config)
for col_num, value in enumerate(df_original.columns):
    worksheet.write(0, col_num, value, format_header)
# # 设置行样式
format_row = workbook.add_format(format_row_config)
format_col = workbook.add_format(format_col_first)
for index, value in df_original.iterrows():
    for col_num in range(17):
        col_value = value[col_num]
        col_value = col_value.split()[0] if isinstance(col_value, str) else col_value
        format_cell = format_col if col_num == 0 else format_row
        worksheet.write(index + 1, col_num, value[col_num], format_cell)
# 添加链接
writer.save()
writer.close()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值