如何将列名排序到 Pandas Dataframe(分类数据)中的 bin 中

Posted

技术标签:

【中文标题】如何将列名排序到 Pandas Dataframe(分类数据)中的 bin 中【英文标题】:How to sort column names into bins in Pandas Dataframe (Categorical Data) 【发布时间】:2019-12-21 18:35:46 【问题描述】:

我有一个 Pandas 数据框,其中包含 173 列不同大学专业(例如 category_ACCOUNTING),列下方每行的值 1 或 0 表示学生是否选择该专业。我想将这 173 列分为两列 - STEM 和非 STEM 专业。如何将分类数据分类到两个分类箱中?

尝试使用 pandas.cut() 无效

picture of onehotencoded dataframe

edit - I now want to put either '1' or '0' in the STEM and nonSTEM columnsc(see picture)

【问题讨论】:

您要订购包含 STEM 和非 STEM 的列吗?还是你想根据一些映射来创建那个列? @Carsten 我想为 STEM 学位和非 STEM 学位创建一个列,并将每个学位映射到其中一个列:) @Carsten 即物理在 STEM 列中的值为“1”,在非 STEM 列中为“0” 【参考方案1】:

您可以使用创建映射的字典:

mapping_dict = 'physics': 'STEM'
df['STEM'] = df['degree'].map(mapping_dict)

I got an error because the column name wasn't accepted

【讨论】:

谢谢 - 因为每一列都是 'category_ACCOUNTING' 的形式,它应该看起来像 mapping_dict = 'category_ENGINEERING: 'STEM' df['STEM'] = df['category'].map (mapping_dict) ? 我需要一点时间才能进入每个专业(因为有 173 个),但我会在完成后回复您。字典是否创建两个新列?理想情况下,我想要两个新专栏,因为我正在研究 STEM 和非 STEM 专业和性别之间的关系,所以我想以 STEM/nonSTEM 专栏为条件:) @Carsten 由于列名而出现错误 - 它被称为“类别”/“类别_”。我需要选择所有以'category_'开头的列

以上是关于如何将列名排序到 Pandas Dataframe(分类数据)中的 bin 中的主要内容,如果未能解决你的问题,请参考以下文章

将字典值增量添加到 pandas DataFrame。具有dict键列名的DataFrame

导出 pandas DataFrame 时如何删除列名行?

DataFrame的排序

pandas-06 Series和Dataframe的排序操作

pandas:dataframe to_csv,如何设置列名

Pandas 使用索引名称作为列名创建 Dataframe