假设excel表df1有multiindex,两行表头“由江阴物流交江西物流”,和“序号、门店编码、 门店名称、实际包装总体积(M3) 、总箱数、集货区标识、地区”,行数不定,如何在“门店名称”列的最后一行添加明天日期
时间: 2023-06-08 09:08:59 浏览: 71
您可以使用 pandas 的 MultiIndex 中的 loc 方法和 pandas 的 datetime 模块中的方法来实现。以下是一种可能的方式:
```python
import pandas as pd
import datetime
# 假设您已经有了名为 df1 的 DataFrame,其中包含 multiindex 和 "门店名称" 列。
# 找到 "门店名称" 列的最后一个索引。
last_idx = df1.groupby(level=[0, 1]).last().index
# 在即将被添加到 DataFrame 的行中创建 multiindex。
new_idx = pd.MultiIndex.from_tuples([(i[0], i[1], datetime.datetime.now().strftime('%Y-%m-%d')) for i in last_idx])
# 创建包含新 multiindex 行的 DataFrame。
new_rows = pd.DataFrame(index=new_idx, columns=df1.columns)
# 将新行添加到 df1 中。
df1 = pd.concat([df1, new_rows])
# 检查更改后的 DataFrame。
print(df1)
# 注意:如果您的 MultiIndex 不是按字典顺序排序的话可能需要对其进行排序。
```
希望这可以帮助您完成任务。
相关问题
如何给excel表df1添加multiindex,两行表头“由江阴物流交江西物流”,和“序号、门店编码、 门店名称、实际包装总体积(M3) 、总箱数、集货区标识、地区”
您可以使用 MultiIndex.from_tuples 方法创建 MultiIndex,然后将其设置为 df1 的列索引。下面是实现代码:
```python
import pandas as pd
# 创建原始数据表df1(假设已经包含以上列)
df1 = pd.DataFrame()
# 创建multiindex
header = [("由江阴物流交江西物流","序号"),
("由江阴物流交江西物流","门店编码"),
("由江阴物流交江西物流","门店名称"),
("由江阴物流交江西物流","实际包装总体积(M3)"),
("由江阴物流交江西物流","总箱数"),
("由江阴物流交江西物流","集货区标识"),
("由江阴物流交江西物流","地区")]
multi_idx = pd.MultiIndex.from_tuples(header)
# 将multiindex设置为df1的列索引
df1.columns = multi_idx
```
以上代码将创建一个 multiindex,然后将其设置为 df1 的列索引,这样就可以自动添加两行表头“由江阴物流交江西物流”和“序号、门店编码、门店名称、实际包装总体积(M3)、总箱数、集货区标识、地区”。注意,如果 df1 已经包含了一些列,那么在设置 multiindex 时需要保证其长度与 df1 的列数相同。
df1和df2有同样的multiindex,两行表头“由江阴物流交江西物流”,和“序号、门店编码、 门店名称、实际包装总体积(M3) 、总箱数、集货区标识、地区”,如何保存到excel不同sheet的时候不生成索引
可以使用 Pandas 库的 to_excel() 方法,并传递参数 index=False,如下所示:
```
writer = pd.ExcelWriter('output.xlsx')
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)
writer.save()
```
这样就能够将两个 DataFrame 保存到同一 Excel 文件中的不同 Sheet 中,并且不生成行索引。
阅读全文