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

基于指定行值筛选Pandas列并拆分DataFrame的方法

解决Pandas DataFrame按指定行值拆分的问题

没问题,我来帮你搞定这个DataFrame拆分的需求!下面是具体的实现步骤和代码,完全贴合你想要的结果:

步骤1:预处理原始DataFrame

首先我们先把原始数据里的class行重命名为cls,同时删掉不需要的d行,和你预期的输出格式对齐:

import pandas as pd

# 原始数据
d = {
    'data_1': pd.Series([1., 2., 3., 4., 1], index=['a', 'b', 'c', 'd', 'class']),
    'data_2': pd.Series([5., 6., 7., 8., 0], index=['a', 'b', 'c', 'd', 'class']),
    'data_3': pd.Series([9., 10., 11., 12., 1], index=['a', 'b', 'c', 'd', 'class'])
}
df = pd.DataFrame(d)

# 行名修正:把'class'改成'cls',并删除'd'行
df = df.rename(index={'class': 'cls'}).drop(index='d')

步骤2:按cls行的值拆分DataFrame

接下来我们以cls行的数值为筛选条件,把列分成两类,生成两个新的DataFrame:

# 提取cls行的所有值作为筛选依据
cls_filter = df.loc['cls']

# 第一个DataFrame:筛选cls值为1的列
df_group1 = df.loc[:, cls_filter == 1]

# 第二个DataFrame:筛选cls值为0的列
df_group0 = df.loc[:, cls_filter == 0]

最终拆分结果

运行代码后,你会得到完全符合预期的两个DataFrame:

第一个DataFrame(对应cls值为1的列):

data_1data_3
a1.09.0
b2.010.0
c3.011.0
cls1.01.0

第二个DataFrame(对应cls值为0的列):

data_2
a5.0
b6.0
c7.0
cls0.0

这样就完美实现了你想要的拆分效果啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:53:41