鱼C论坛

 找回密码
 立即注册
查看: 105|回复: 4

大佬救命,如果拆分维度列,具体见描述

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 做一名学霸 于 2025-11-12 09:33 编辑

各位大佬好,目前在利用Pandas清洗Excel的数据,遇到一个难题,就是有一个维度列要拆分,具体效果:
将核算维度列拆分,拆分后,核算维度作为新的列名,对应的值作为对应列的值:
比如下图中有银行存款、应收账款,拆出来后
科目名称   银行账户   合作金融机构   客商     产品服务类型    项目档案
银行存款   172...        中国农业...         
应收账款                                        房县...   提供劳务         XM9012655

这个利用Pandas怎么实现?请各位大佬指点。
Snipaste_2025-11-12_09-29-50.png

科目余额表.zip

77.94 KB, 下载次数: 0

科目余额表

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
交给AI实现
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
本帖最后由 lscp 于 2025-11-12 19:10 编辑


用哪个AI??我也有不少Excel文件,用哪个AI可以帮助转换成Python的自动处理?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
可以直接把你的要求喂给AI,会直接给你做好。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
要实现对“核算维度”列的信息拆分,我们可以利用Python的字符串处理和字典操作来完成。以下是详细的实现步骤:


### 步骤1:读取数据(以模拟数据为例,若从Excel读取可使用`pandas`)
首先,我们模拟表格中的数据,将“科目名称”和“核算维度”整理成列表:
```python
data = [
    {"科目名称": "银行存款", "核算维度": "银行账户:17218801040017302,房县光谷环保科技有限公司;合作金融机构:中国农业银行股份有限公司房县支行"},
    {"科目名称": "应收账款_应收销", "核算维度": "客商:KS10019077,房县住房和城乡建设局;产品服务类型:020103,提供劳务-加工劳务-水务运营;项目档案:XM9012655,房县城乡供排水一体化PPP项目"},
    {"科目名称": "应收账款_应收服", "核算维度": "客商:KS10019077,房县住房和城乡建设局;项目档案:XM9012655,房县城乡供排水一体化PPP项目;产品服务类型:020103,提供劳务-加工劳务-水务运营"},
    {"科目名称": "应收账款_应收服", "核算维度": "客商:KS10019077,房县住房和城乡建设局;项目档案:XM9012655,房县城乡供排水一体化PPP项目;产品服务类型:040302,现代服务-研发和技术服务-污水处理"},
    {"科目名称": "应收账款_暂估款", "核算维度": "客商:KS10019077,房县住房和城乡建设局;项目档案:XM9012655,房县城乡供排水一体化PPP项目;产品服务类型:04010101,现代服务-建筑服务-工程服务-工程施工"},
    {"科目名称": "应收账款_暂估款", "核算维度": "客商:KS10019077,房县住房和城乡建设局;项目档案:XM9012655,房县城乡供排水一体化PPP项目;产品服务类型:020103,提供劳务-加工劳务-水务运营"},
    {"科目名称": "应收账款_暂估款", "核算维度": "客商:KS10019077,房县住房和城乡建设局;项目档案:XM9012655,房县城乡供排水一体化PPP项目;产品服务类型:040302,现代服务-研发和技术服务-污水处理"},
    {"科目名称": "应付账款_暂估款", "核算维度": "客商:KS10019077,房县住房和城乡建设局;项目档案:XM9012655,房县城乡供排水一体化PPP项目;产品服务类型:01101,销售商品-水电气-水"},
    {"科目名称": "预付账款_预付采", "核算维度": "客商:KS10003539,中国石化销售股份有限公司湖北十堰石油分公司;合同档案:999,通用合同档案;项目档案:XM9012655,房县城乡供排水一体化PPP项目"}
]
```


### 步骤2:定义拆分函数
我们需要将“核算维度”中的字符串按**分号(;)**拆分大类,再按**冒号(:)**拆分键和值,最终整理成字典:
```python
def split_dimension(dimension_str):
    dim_dict = {}
    # 先按分号拆分大类
    categories = dimension_str.split(';')
    for cat in categories:
        # 再按冒号拆分键和值(假设冒号是唯一的分隔符)
        key, value = cat.split(':', 1)  # split(':', 1)表示只按第一个冒号拆分
        dim_dict[key.strip()] = value.strip()
    return dim_dict
```


### 步骤3:遍历数据并拆分
对每一条数据的“核算维度”执行拆分,并将结果保存:
```python
for item in data:
    dimension = item["核算维度"]
    split_result = split_dimension(dimension)
    item["核算维度拆分"] = split_result  # 新增列保存拆分结果

# 打印示例结果
for item in data[:2]:  # 只打印前2条示例
    print("科目名称:", item["科目名称"])
    print("核算维度拆分:", item["核算维度拆分"])
    print("-" * 50)
```


### 输出结果(示例)
```
科目名称: 银行存款
核算维度拆分: {'银行账户': '17218801040017302,房县光谷环保科技有限公司', '合作金融机构': '中国农业银行股份有限公司房县支行'}
--------------------------------------------------
科目名称: 应收账款_应收销
核算维度拆分: {'客商': 'KS10019077,房县住房和城乡建设局', '产品服务类型': '020103,提供劳务-加工劳务-水务运营', '项目档案': 'XM9012655,房县城乡供排水一体化PPP项目'}
--------------------------------------------------
```


### 若从Excel读取数据(拓展)
如果数据存储在Excel中,可使用`pandas`库读取并处理:
```python
import pandas as pd

# 读取Excel文件
df = pd.read_excel("你的文件.xlsx")

# 定义拆分函数并应用到“核算维度”列
df["核算维度拆分"] = df["核算维度"].apply(split_dimension)

# 保存结果(可选)
df.to_excel("拆分结果.xlsx", index=False)
```


通过以上代码,即可实现对“核算维度”列的结构化拆分,便于后续的数据分析和处理。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 08:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表