python到pandas_python-将 pandas 值映射到分类级别

这篇博客介绍了如何将Pandas DataFrame中的整数值映射到对应的分类标签,如将1-7映射为一周中的星期。作者首先尝试使用astype('category'),但遇到了循环列表的问题。接着尝试使用.factorize(),但由于值的长度与索引长度不匹配导致错误。最终,通过设置dtype为'category'并使用rename_categories()成功将数值转换为星期的标签。
摘要由CSDN通过智能技术生成

pandas 新手. R用户使用拆分,应用,合并模式来分析子群体.例如性别,1 =“男性”,2 =“女性”,9 =“未知”.

我有一个 dataframe ,其中有一个天列,其20,000的值是从1到7的整数,对应于“ Mon”,“ Tue”等.我需要使用标签而不是它们的原始int值进行分类.

我的第一次尝试是尝试.astype(“ category”):

import numpy as np

import pandas as pd

dow = pd.DataFrame({'labels': ("Sunday","Monday","Tuesday",\

"Wednesday", "Thursday", "Friday", "Saturday")})

data = pd.DataFrame({'value': [1, 1, 2, 3, 4, 7, 8, 9, 0]})

data['formtatted'] = dow['labels'].astype('category')

data

value formtatted

0 1 Sunday

1 1 Monday

2 2 Tuesday

3 3 Wednesday

4 4 Thursday

5 7 Friday

6 8 Saturday

7 9 NaN

8 0 NaN

我希望标签映射到两次给定“ Sunday”的整数值,而不是获得循环列表的行为.

接下来,我尝试使用.factorize属性,例如:

data2 = pd.DataFrame({'values': [1, 1, 2, 3, 4, 7, 8, 9, 0]})

dow2 = pd.DataFrame({'labels': ["Sunday","Monday","Tuesday", \

"Wednesday", "Thursday", "Friday", "Saturday"]})

dow_cat = pd.factorize(dow2['labels'])

dow_cat

(array([0, 1, 2, 3, 4, 5, 6]),

Index(['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday',

'Saturday'], dtype='object'))

看起来很有希望.

data2['labels'] = dow_cat[0]

但是会引发错误:值的长度与索引的长度不匹配

说明:无法在创建时指定标签.之后使用s.cat.rename_categories(new_labels).

很公平:

dow3 = pd.DataFrame({'values': [1, 2, 3, 4, 5, 6, 7]},

dtype="category")

dow3.values = dow3['values'].cat.rename_categories(["Sunday", \

"Monday","Tuesday","Wednesday", \

"Thursday", "Friday", "Saturday"])

df3['formatted'] = dow3["values"]

df3

values formatted

0 1 Sunday

1 1 Monday

2 2 Tuesday

3 3 Wednesday

4 4 Thursday

5 7 Friday

6 8 Saturday

7 9 NaN

8 0 NaN

我从哪儿开始的,具有循环列表的行为.

我敢打赌,我已经忽略了显而易见的事情,但这使我难以理解.关于我从这里去哪里的建议?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值