Pandas: 如何将表示类别的字符串对象的列转换为整数?
Pandas: How to convert column of string objects representing categories to integers?
例如,如果我有一个 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'].dtype
是 dtype('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 的 'day' 列设置为以下内容:
>>> 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
'day'列为整型:
>>> df.dtypes
day int64
hour int64
price float64
booked bool
例如,如果我有一个 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'].dtype
是 dtype('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 的 'day' 列设置为以下内容:
>>> 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
'day'列为整型:
>>> df.dtypes
day int64
hour int64
price float64
booked bool