【发布时间】:2019-10-29 18:02:01
【问题描述】:
我有一个数据集,其中有一列包含类别。我想做的是将这些类别组合成新的类别。
我的数据集如下所示(类别列是一个字符串列),我有 160 个类别。
在我的示例中,仅显示了四个类别。
Category
ZA-01
ZA-01
ZA-01
ZA-01
XA-01
XA-01
XA-01
XA-01
YA-01
YA-01
YA-01
YA-01
WA-01
WA-01
WA-01
WA-01
我想得到的是以下(数据框中行的原始顺序不变,这很重要)
Category New_Category
ZA-01 A
ZA-01 A
ZA-01 A
ZA-01 A
XA-01 A
XA-01 A
XA-01 A
XA-01 A
YA-01 B
YA-01 B
YA-01 B
YA-01 B
WA-01 B
WA-01 B
WA-01 B
WA-01 B
最简单的方法是使用 if elif 语句,但如果您有 160 个类别,这是一项艰巨的任务,而且很容易出错。
我希望 Python 做的是使用 df.[['categories]].unique() 获取唯一类别,它保留数据框中类别的顺序,然后对 Python 说:group category one (ZA -01) 和两个 (XA-01) 组合成一个名为 A 的新类别,然后将类别三 (YA-01) 和类别四 (WA-01) 组合成一个名为 B 的新类别,以此类推。
在 Python 中有没有不使用 if elif 语句的方法?
-------------------编辑-----------
如果我有的话
Group Category
A ZA-01
A ZA-01
A ZA-01
A ZA-01
A XA-01
A XA-01
A XA-01
A XA-01
A ZZ-12
A ZX-11
B YA-01
B YA-01
B YA-01
B YA-01
B WA-01
B WA-01
B WA-01
B WA-01
B ZZ-01
B ZZ-99
B ZZ-99
B AA-01
我想在一个组中组合两个类别(所以在 A 中我想组合两个类别的组,在 B 中我想组合两个类别等等)。同样,我想保留原始数据框中的行顺序。
所以我想得到
Group Category New_Category
A ZA-01 1
A ZA-01 1
A ZA-01 1
A ZA-01 1
A XA-01 1
A XA-01 1
A XA-01 1
A XA-01 1
A ZZ-12 2
A ZX-11 2
B YA-01 3
B YA-01 3
B YA-01 3
B YA-01 3
B WA-01 3
B WA-01 3
B WA-01 3
B WA-01 3
B ZZ-01 4
B ZZ-99 4
B ZZ-99 4
B AA-01 5
【问题讨论】:
标签: pandas categories pandas-groupby