data.groupby(['线上订单号', '包裹数量']).agg({'商品数量': 'sum', '成本和': 'sum'})单元格不自动合并
时间: 2023-09-26 16:05:53 浏览: 164
要让单元格自动合并,可以使用pandas中的style属性。具体实现如下:
1. 先对数据进行分组和聚合,得到一个新的DataFrame:
```
new_data = data.groupby(['线上订单号', '包裹数量']).agg({'商品数量': 'sum', '成本和': 'sum'})
```
2. 使用style属性对DataFrame进行格式化:
```
new_data.style.format({'商品数量': '{:.0f}', '成本和': '{:.2f}'}).\
set_properties(subset=['线上订单号'], **{'text-align': 'center'}).\
set_table_styles([{'selector': 'th', 'props': [('text-align', 'center')]}]).\
apply(lambda x: ['background: #a6cee3' if i%2==0 else 'background: #b2df8a' for i in range(len(x))], axis=1)
```
这里,我们使用format方法对'商品数量'和'成本和'列进行格式化,保留0位小数和2位小数。然后,使用set_properties方法设置表头和第一列的文本对齐方式为居中。接着,使用set_table_styles方法设置表格样式,使表头居中对齐。最后,使用apply方法对每一行设置背景色,实现单元格自动合并的效果。
完整代码:
```
import pandas as pd
data = pd.read_excel('data.xlsx')
new_data = data.groupby(['线上订单号', '包裹数量']).agg({'商品数量': 'sum', '成本和': 'sum'})
new_data.style.format({'商品数量': '{:.0f}', '成本和': '{:.2f}'}).\
set_properties(subset=['线上订单号'], **{'text-align': 'center'}).\
set_table_styles([{'selector': 'th', 'props': [('text-align', 'center')]}]).\
apply(lambda x: ['background: #a6cee3' if i%2==0 else 'background: #b2df8a' for i in range(len(x))], axis=1)
```
阅读全文