You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按CostCenter键对含键值对标签列的Pandas DataFrame分组?

按Pandas DataFrame中混合键值对列的CostCenter分组实现方案

步骤说明

  1. 修复键值对字符串格式:当前Tags列的内容是缺少外层大括号的JSON片段,先补全为合法JSON格式,再解析成字典。
  2. 提取CostCenter字段:从解析后的字典中提取CostCenter对应的值,生成单独的列。
  3. 执行分组操作:基于新生成的CostCenter列进行分组。

完整代码示例

import pandas as pd
import json

# 构造示例数据
data = {
    'Tags': [
        '"CostCenter": "Marketing", "Manager": "John Doe"',
        '"CostCenter": "Sales", "Manager": "Jane Smith"',
        '"CostCenter": "Marketing", "Manager": "Bob Brown"',
        '"Manager": "Alice Lee"'  # 无CostCenter的情况
    ]
}
df = pd.DataFrame(data)

# 解析Tags列为字典
df['Tags_dict'] = df['Tags'].apply(
    lambda x: json.loads(f'{{{x}}}') if x.strip() else {}
)

# 提取CostCenter,无该键时返回None
df['CostCenter'] = df['Tags_dict'].apply(lambda x: x.get('CostCenter'))

# 按CostCenter分组并统计每组行数
group_count = df.groupby('CostCenter').size()
print("分组统计结果:")
print(group_count)

# 遍历分组查看详细数据
print("\n各分组详情:")
for center, group in df.groupby('CostCenter'):
    print(f"=== {center} ===")
    print(group[['Tags']])

注意事项

  • 如果Tags列的字符串存在单引号、转义字符等格式问题,可以先用str.replace统一替换为双引号,确保JSON解析正常。
  • 对于没有CostCenter的行,可通过df = df.dropna(subset=['CostCenter'])过滤,或用x.get('CostCenter', 'Unknown')设置默认值。

内容的提问来源于stack exchange,提问作者Gill-Bates

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 12:20:31