首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是最有效的繁体声方式来重新记录一个熊猫栏?

什么是最有效的繁体声方式来重新记录一个熊猫栏?
EN

Stack Overflow用户
提问于 2017-09-11 20:26:13
回答 2查看 1.6K关注 0票数 2

我想在熊猫DataFrame上“匿名”或“重新编码”一个专栏。最有效的方法是什么?我写了以下文章,但似乎有一个内置的函数或更好的方法。

代码语言:javascript
复制
dataset = dataset.sample(frac=1).reset_index(drop=False) # reorders dataframe randomly (helps anonymization, since order could have some meaning)

# make dictionary of old and new values
value_replacer = 1
values_dict = {}   
for unique_val in dataset[var].unique():
    values_dict[unique_val] = value_replacer
    value_replacer += 1

# replace old values with new
for k, v in values_dict.items():
    dataset[var].replace(to_replace=k, value=v, inplace=True)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-11 20:33:35

你想要因子化你的价值观:

代码语言:javascript
复制
dataset[var] = pd.factorize(dataset[var])[0] + 1

演示:

代码语言:javascript
复制
In [2]: df
Out[2]:
   col
0  aaa
1  aaa
2  bbb
3  ccc
4  ddd
5  bbb

In [3]: df['col'] = pd.factorize(df['col'])[0] + 1

In [4]: df
Out[4]:
   col
0    1
1    1
2    2
3    3
4    4
5    2
票数 3
EN

Stack Overflow用户

发布于 2017-09-11 20:41:37

替代方式

代码语言:javascript
复制
df.col.astype('category').cat.codes.add(1)
Out[697]: 
0    1
1    1
2    2
3    3
4    4
5    2
dtype: int8

更喜欢使用MaxU的答案:)

代码语言:javascript
复制
%timeit df.col.astype('category').cat.codes.add(1)#Wen
1000 loops, best of 3: 437 µs per loop
%timeit df['col'] = pd.factorize(df['col'])[0] + 1#MaxU
1000 loops, best of 3: 194 µs per loop
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46163849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档