Pythonpandas操作DF,并创build样式和链接的Excel

问题1:组类似的行

我有一个数据框,看起来像这样:

TTL1 TTL2 TTL3 0 val1 val2 val3 1 val1 val2 val3 2 val1 val2 val3 3 val1 val2 val3 134 val1 val2 val3 135 val1 val2 val3 136 val1 val2 val3 205 val1 val2 val3 

我想检查索引号是否成功(例如,1,2,3或56,57,58等),如果是,则添加另一列以显示它们在同一组中,所以输出应该是:

  TTL1 TTL2 TTL3 GROUP_TTL 0 val1 val2 val3 0 1 val1 val2 val3 0 2 val1 val2 val3 0 3 val1 val2 val3 0 134 val1 val2 val3 1 135 val1 val2 val3 1 136 val1 val2 val3 1 205 val1 val2 val3 2 

问题2:操纵Excel文件:

现在对于我不确定可以在pandas和Python中完成的部分:

我想在excel中对行进行着色,所以每组行的颜色都是相同的。 所以0组将是绿色,1黄色等

我也想在excel表格中添加链接到计算机上的其他excel表格中。

pandas和python有可能吗?

谢谢!

您可以使用第一个转换to_series index函数diff (尚未实现index ),然后比较,如果值不是1 。 获取可以通过cumsum和last cumsum累积和的boolean Series 1

 df['GROUP_TTL'] = (df.index.to_series().diff() != 1).cumsum().sub(1) print (df) TTL1 TTL2 TTL3 GROUP_TTL 0 val1 val2 val3 0 1 val1 val2 val3 0 2 val1 val2 val3 0 3 val1 val2 val3 0 134 val1 val2 val3 1 135 val1 val2 val3 1 136 val1 val2 val3 1 205 val1 val2 val3 2 

染色:

 #http://xlsxwriter.readthedocs.io/example_pandas_conditional.html len_index = len(df.index) + 1 writer = pd.ExcelWriter('file.xlsx', engine='xlsxwriter') df.to_excel(writer, sheet_name='Sheet1', index=None) workbook = writer.book worksheet = writer.sheets['Sheet1'] worksheet.conditional_format('D2:D'+str(len_index), {'type': '3_color_scale'}) writer.save() 

我也想在excel表格中添加链接到计算机上的其他excel表格中。

这是可能的,请参阅文档的write_url()部分。 例如:

 # Link to a cell on the current worksheet. worksheet.write_url('A1', 'internal:Sheet1!A1') # Link to a cell on another worksheet. worksheet.write_url('A2', 'internal:Sheet2!A1') # Link to another Excel workbook. worksheet.write_url('A3', r'external:c:\temp\foo.xlsx') # Link to a worksheet cell in another workbook. worksheet.write_url('A4', r'external:c:\foo.xlsx#Sheet2!A1') # Link to a worksheet another workbook with a relative link. worksheet.write_url('A5', r'external:..\foo.xlsx') # Link to a worksheet another workbook with a network link. worksheet.write_url('A6', r'external:\\NET\share\foo.xlsx')