Q.1:GROUP SIMILAR ROWS
我有一个如下所示的数据框:
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?
谢谢你!答案 0 :(得分:2)
您可以先使用to_series
index
转换为diff
(尚未对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()
答案 1 :(得分:2)
我还想在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')