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')