python 使用pandas库,使用 pandas 库中的 read_excel 函数和 MultiIndex 类型来读取合并单元格表头,操作excel文件“data\\推送名单.xlsx”,遍历循环读取所有sheet表,读取表头“接收人工号”的所在列数据data1和读取合并单元格表头“推送内容”的所在的合并列的所有数据data2,合并data1,data2为一个总数据data,定义一个字典dictext,定义一个字符串strtext,对data做遍历循环,表头为“接收人工号”的列单元格数据为字典的key值,对表头为“推送内容”的合并列数据做字符串拼接strtext,strtext做字典的value值,每行遍历都重置strtext 相关所有代码
时间: 2024-03-06 09:49:13 浏览: 82
python pandas 读取excel数据
以下是使用pandas库实现的代码,可以实现读取合并单元格表头并拼接数据的功能:
```python
import pandas as pd
# 读取excel文件的所有sheet表
xls = pd.ExcelFile('data\\推送名单.xlsx')
df_list = []
for sheet_name in xls.sheet_names:
# 使用MultiIndex类型读取合并单元格表头
df = pd.read_excel(xls, sheet_name=sheet_name, header=[0,1], index_col=0)
# 获取“接收人工号”列数据
data1 = df.loc[:, ('接收人工号', '')]
# 获取“推送内容”合并列的所有数据
data2 = df.loc[:, ('推送内容', slice(None))]
# 合并data1,data2为一个总数据data
data = pd.concat([data1, data2], axis=1)
# 定义一个字典dictext,定义一个字符串strtext
dictext = {}
strtext = ''
# 遍历循环data
for index, row in data.iterrows():
emp_no = row['接收人工号']
# 表头为“接收人工号”的列单元格数据为字典的key值
if pd.notna(emp_no):
dictext[emp_no] = ''
# 对表头为“推送内容”的合并列数据做字符串拼接strtext
push_content = row['推送内容']
if isinstance(push_content, str):
strtext += push_content
# 每行遍历都重置strtext
if pd.notna(emp_no):
dictext[emp_no] = strtext
strtext = ''
# 将dictext转为DataFrame格式并添加到df_list中
df_list.append(pd.DataFrame.from_dict(dictext, orient='index'))
# 合并所有DataFrame
result = pd.concat(df_list, axis=1)
# 将索引列名称设置为“接收人工号”
result.index.name = '接收人工号'
# 将结果保存到csv文件中
result.to_csv('data\\推送名单结果.csv')
```
以上代码中,我们使用了`pd.read_excel()`函数来读取excel文件中的数据,其中通过`header=[0,1]`和`index_col=0`两个参数来使用MultiIndex类型读取合并单元格表头。然后,我们获取“接收人工号”列数据和“推送内容”合并列的所有数据,将它们合并为一个总数据data。接着,我们定义了一个字典dictext和一个字符串strtext,并对data进行遍历循环,表头为“接收人工号”的列单元格数据为字典的key值,对表头为“推送内容”的合并列数据做字符串拼接strtext,strtext做字典的value值,每行遍历都重置strtext。最后,我们将dictext转为DataFrame格式并添加到df_list中,最终将所有DataFrame合并为一个结果DataFrame,并将结果保存到csv文件中。
阅读全文