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

基于子串信息重排Pandas DataFrame的解决方案咨询

实现代码

首先导入依赖库:

import pandas as pd
import numpy as np

以下是完整处理逻辑:

# 构造原始数据,若列名实际为Type1_3_A/Type2_3_B可直接替换第一、二个key即可,拆分逻辑通用
df = pd.DataFrame({
    'Type1_100_A': {0: 34.0, 1: 4573.0, 2: 16.0, 3: np.nan, 4: np.nan},
    'Type2_200_B': {0: np.nan, 1: np.nan, 2: np.nan, 3: 17.0, 4: 25.0},
    'Seq': {
        0: '2_CTGT',
        1: '7_GATG',
        2: '4_ACTT',
        3: '5_GTCA',
        4: '1_TCGA'
    }
})

# 宽表转长表,过滤掉数值为空的无效行
df_melt = df.melt(id_vars='Seq', var_name='col_info', value_name='Number').dropna(subset='Number')
# 拆分原列名字段,生成Type、Label、Replicate三列
df_melt[['Type', 'Label', 'Replicate']] = df_melt['col_info'].str.split('_', expand=True)
# 拆分Seq字段,生成Count和序列内容两列
df_melt[['Count', 'Seq']] = df_melt['Seq'].str.split('_', expand=True)
# 转换Count列为整型,按目标顺序调整列后重置索引
df_melt['Count'] = df_melt['Count'].astype(int)
result = df_melt[['Type', 'Label', 'Replicate', 'Count', 'Seq', 'Number']].reset_index(drop=True)

执行后result就是你需要的目标结构。如果原始列名的Label字段需要替换为指定值,可在处理过程中加一行替换逻辑即可,示例:

# 示例:将Label列的3替换为对应值,适配你原始构建代码的列名情况
df_melt['Label'] = df_melt['Label'].replace({'3':'100', '3':'200'})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:15:08