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

如何基于DataFrame列值创建多列表并处理多分类归属

解决方案:按类别拆分并生成Ticker列表

这里有个简洁高效的方法来实现你想要的效果,我平时处理这类DataFrame分组需求时也常用这个思路,核心是先拆分多类别行,再分组收集对应的Ticker:

步骤说明与代码实现

import pandas as pd

# 初始化你的原始DataFrame
df1 = pd.DataFrame({
    'Ticker': ['XOM', 'CVX', 'RDSA-GB', 'BP-GB', 'EQNR-NO', 'FP-FR', 'ENI-IT', 'COP'],
    'Category': ['Group 1', 'Group 1', 'Group 2', 'Group 1, Group 2', 'Group 3', 'Group 4', 'Group 3, Group 4', 'Group 5']
})

# 1. 拆分多类别并将每个类别单独成行
df_expanded = df1.assign(Category=df1['Category'].str.split(', ')).explode('Category')

# 2. 把Category中的空格替换为下划线,生成目标变量名格式
df_expanded['Category'] = df_expanded['Category'].str.replace(' ', '_')

# 3. 按处理后的Category分组,将每个组的Ticker收集为列表
grouped_tickers = df_expanded.groupby('Category')['Ticker'].apply(list).to_dict()

# 4. (可选)将字典中的列表转为全局变量,直接使用Group_1这类名称
for group_name, ticker_list in grouped_tickers.items():
    globals()[group_name] = ticker_list

代码解释

  • 拆分与展开:用str.split(', ')把包含多个类别的字符串拆成列表,再通过explode让每个类别对应单独的行,这样像BP-GB这类属于多个组的Ticker会被分配到对应组的行中。
  • 名称格式化:用str.replace(' ', '_')把"Group 1"转为"Group_1",完全匹配你需要的变量名格式。
  • 分组收集:通过groupby+apply(list)把每个组的Ticker整理成列表,并存入字典方便后续调用。
  • 转为全局变量:如果需要直接调用Group_1这类变量,用globals()把字典的键值对转为全局变量,运行后就能直接使用这些列表了。

验证结果

运行代码后,你可以直接打印变量查看结果:

print(Group_1)  # 输出: ['XOM', 'CVX', 'BP-GB']
print(Group_2)  # 输出: ['RDSA-GB', 'BP-GB']
print(Group_3)  # 输出: ['EQNR-NO', 'ENI-IT']
print(Group_4)  # 输出: ['FP-FR', 'ENI-IT']
print(Group_5)  # 输出: ['COP']

内容的提问来源于stack exchange,提问作者Jaiale1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:40:20