相关疑难解决方法(0)

转换pandas数据帧中的分类数据

我有一个包含这种类型数据的数据框(列太多):

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怎么这么巧妙?

python pandas

81
推荐指数
8
解决办法
13万
查看次数

将pandas系列从字符串转换为唯一的int id

我在一个系列中有一个分类变量.我想为每个唯一值分配整数id并使用id创建一个新系列,有效地将字符串变量转换为整数变量.什么是最紧凑/有效的方法?

python pandas

16
推荐指数
2
解决办法
1万
查看次数

替换熊猫数据框的唯一值

嗨,我是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唯一值。

python replace categories dataframe pandas

7
推荐指数
1
解决办法
2796
查看次数

pythonic和uFunc-y方式将pandas列转换为"增加"索引?

假设我有一只像这样的熊猫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一些特殊的功能?

python pandas

7
推荐指数
3
解决办法
162
查看次数

如何将分类数据转换为数值数据?

我有功能=> 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)

python pandas

0
推荐指数
1
解决办法
3385
查看次数

标签 统计

pandas ×5

python ×5

categories ×1

dataframe ×1

replace ×1