向Datafram中的分类数据添加标签

2024-09-29 05:22:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图转换有关婚姻状况的调查数据,如下所示:

df['d11104'].value_counts()

[1] Married        1    250507
[2] Single         2     99131
[4] Divorced       4     32817
[3] Widowed        3     24839
[5] Separated      5      8098
[-1] keine Angabe         2571
Name: d11104, dtype: int64

到目前为止,我做了df['marstat'] = df['d11104'].cat.codes.astype('category'),屈服了

^{pr2}$

现在,我想在列marstat中添加标签,这样就可以维护数值,也就是说,我喜欢通过条件df['marstat'] == 1来识别人,同时将标签['Married','Single','Divorced','Widowed']附加到这个变量。如何做到这一点?在

编辑:多亏了jpp的回答,我只需创建了一个新变量并手动定义了标签:

df['marstat_lb'] = df['marstat'].map({1: 'Married', 2: 'Single', 3: 'Widowed', 4: 'Divorced', 5: 'Separated'})

Tags: 数据dfvalue标签singlecountsseparatedmarried
1条回答
网友
1楼 · 发布于 2024-09-29 05:22:50

可以将结果转换为数据帧,并在输出中同时包含类别代码和名称。在

类别映射字典可以通过对类别的枚举来提取。下面是最小的例子。在

import pandas as pd

df = pd.DataFrame({'A': ['M', 'M', 'S', 'D', 'W', 'M', 'M', 'S',
                         'S', 'S', 'M', 'W']}, dtype='category')

print(df.A.cat.categories)

# Index(['D', 'M', 'S', 'W'], dtype='object')

res = df.A.cat.codes.value_counts().to_frame('count')

cat_map = dict(enumerate(df.A.cat.categories))

res['A'] = res.index.map(cat_map.get)

print(res)

#    count  A
# 1      5  M
# 2      4  S
# 3      2  W
# 0      1  D

例如,您可以通过df['A'] == 'M'df.index == 1来访问“M”。在


更简单的解决方案是使用applyvalue_counts,然后为代码添加一个额外的列:

^{pr2}$

相关问题 更多 >