Python Pandas 操作 df 并使用样式和链接创建 excel



Q.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

Q.2:操作 EXCEL 文件:

现在对于我不确定是否可以在熊猫和 python 中完成的部分:

我想为 excel 中的行着色,因此每组行都将使用相同的颜色。 所以组 0 将是绿色,1 黄色等。

我还想在 excel 工作表中添加指向计算机上其他一些 Excel 工作表的链接。

熊猫和蟒蛇可能吗?

谢谢!

您可以先对函数diff使用转换to_series index(尚未为index实现),然后比较值是否未1。得到boolean Series,它可以通过cumsum和最后一个减去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:tempfoo.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:\NETsharefoo.xlsx')

最新更新