python - Pandas:如何将表示类别的字符串对象列转换为整数?

标签 python pandas dataframe types categorical-data

例如,如果我有一个 DataFrame df

    day     hour    price   booked
0   monday  7      12.0     True
1   monday  8      12.0     False
2   tuesday 7      13.0     True
3   sunday  8      13.0     False
4   monday  7      15.0     True
5   monday  8      13.0     False
6   tuesday 7      13.0     True
7   tuesday 8      15.0     False

例如,其中 df['day'].dtypedtype('O')

我想将其转换为:

    day     hour    price   booked
0   1       7      12.0     1
1   1       8      12.0     0
2   2       7      13.0     1
3   3       8      13.0     0
4   1       7      15.0     1
5   1       8      13.0     0
6   2       7      13.0     1
7   2       8      15.0     0

到整数的映射可以是任意的。

最佳答案

您可以使用factorize将列中的不同值编码为整数:

df['day'] = pd.factorize(df.day)[0]

这会将示例 DataFrame 的“日”列设置为以下内容:

>>> df
   day  hour  price booked
0    0     7     12   True
1    0     8     12  False
2    1     7     13   True
3    2     8     13  False
4    0     7     15   True
5    0     8     13  False
6    1     7     13   True
7    1     8     15  False

“日”列是整数类型:

>>> df.dtypes
day         int64
hour        int64
price     float64
booked       bool

关于python - Pandas:如何将表示类别的字符串对象列转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32595201/

相关文章:

Python 图形工具 - 删除未连接的顶点

Python 正则表达式就地查找和替换

python - 计算 DF 内给定 "set"中某个值出现的频率

python - 对 Pandas 数据框进行子集化的最佳方法

python - 从 python 中的 numpy genfromtxt 获取列名

python - 透视两列数据框

python - 将单个行按 ";;"拆分为同一列中的多个单独行

python - 根据索引是否存在于两个数据框中,选择并添加另一个数据框中的列值

pandas - ModuleNotFoundError : No module named 'xlsxwriter' in databricks

r - 如何比较两个数据框?