我有一个包含这种类型数据的数据框(列太多):
col1 int64
col2 int64
col3 category
col4 category
col5 category
Run Code Online (Sandbox Code Playgroud)
列似乎是这样的:
Name: col3, dtype: category
Categories (8, object): [B, C, E, G, H, N, S, W]
Run Code Online (Sandbox Code Playgroud)
我想将列中的所有值转换为整数,如下所示:
[1, 2, 3, 4, 5, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)
我通过这个解决了一个问题:
dataframe['c'] = pandas.Categorical.from_array(dataframe.col3).codes
Run Code Online (Sandbox Code Playgroud)
现在我的数据框中有两列 - 旧的'col3'和新的'c',需要删除旧列.
这是不好的做法.这是工作,但在我的数据框架中有很多列,我不想手动完成.
这个pythonic怎么这么巧妙?
我在一个系列中有一个分类变量.我想为每个唯一值分配整数id并使用id创建一个新系列,有效地将字符串变量转换为整数变量.什么是最紧凑/有效的方法?
嗨,我是python和pandas的新手。
我已经使用pandas提取了其中一列的唯一值。现在,在获取列的唯一值(即字符串)之后。
['Others, Senior Management-Finance, Senior Management-Sales'
'Consulting, Strategic planning, Senior Management-Finance'
'Client Servicing, Quality Control - Product/ Process, Strategic
planning'
'Administration/ Facilities, Business Analytics, Client Servicing'
'Sales & Marketing, Sales/ Business Development/ Account Management,
Sales Support']
Run Code Online (Sandbox Code Playgroud)
我想用唯一的整数值替换字符串值。
为简单起见,我可以为您提供虚拟输入和输出。
输入:
Col1
A
A
B
B
B
C
C
Run Code Online (Sandbox Code Playgroud)
唯一的df值如下
[ 'A' 'B' 'C' ]
Run Code Online (Sandbox Code Playgroud)
更换色谱柱后应如下所示
Col1
1
1
2
2
2
3
3
Run Code Online (Sandbox Code Playgroud)
请给我建议使用循环或其他任何方式的方法,因为我拥有的不仅是300唯一值。
假设我有一只像这样的熊猫df:
Index A B
0 foo 3
1 foo 2
2 foo 5
3 bar 3
4 bar 4
5 baz 5
Run Code Online (Sandbox Code Playgroud)
添加如下列的快速方法是什么:
Index A B Aidx
0 foo 3 0
1 foo 2 0
2 foo 5 0
3 bar 3 1
4 bar 4 1
5 baz 5 2
Run Code Online (Sandbox Code Playgroud)
即为每个唯一值添加一个增加的索引?
我知道我可以使用df.unique(),然后使用dict并enumerate创建一个查找,然后应用该字典查找来创建列.但我觉得应该有更快的方式,可能涉及groupby一些特殊的功能?
我有功能=> city这是分类数据,即字符串,但是使用硬编码代替硬编码replace()吗?
train['city'].unique()
Output: ['city_149', 'city_83', 'city_16', 'city_64', 'city_100', 'city_21',
'city_114', 'city_103', 'city_97', 'city_160', 'city_65',
'city_90', 'city_75', 'city_136', 'city_159', 'city_67', 'city_28',
'city_10', 'city_73', 'city_76', 'city_104', 'city_27', 'city_30',
'city_61', 'city_99', 'city_41', 'city_142', 'city_9', 'city_116',
'city_128', 'city_74', 'city_69', 'city_1', 'city_176', 'city_40',
'city_123', 'city_152', 'city_165', 'city_89', 'city_36', .......]
Run Code Online (Sandbox Code Playgroud)
我正在尝试的是:
train.replace(['city_149', 'city_83', 'city_16', 'city_64', 'city_100', 'city_21',
'city_114', 'city_103', 'city_97', 'city_160', 'city_65',
'city_90', 'city_75', 'city_136', 'city_159', 'city_67', 'city_28',
'city_10', 'city_73', 'city_76', 'city_104', 'city_27', 'city_30',
'city_61', 'city_99', 'city_41', 'city_142', 'city_9', 'city_116',
'city_128', 'city_74', …Run Code Online (Sandbox Code Playgroud)