2015-09-23 36 views
1

我有一个(样本)数据框,看起来像这样:在熊猫中,我如何用标签字符串替换标签ID?

labelID  count 
1   185302 
2   137777 
3   247434 
4   136571 
5    39724 
6    46959 
7    88471 
8   109182 
9    65326 

我想和标签名称,以取代labelID列,让我有这样的事情:

labelID  count 
label 1  185302 
label 2  137777 
label 3  247434 
label 4  136571 
label 5  39724 
label 6  46959 
label 7  88471 
label 8  109182 
label 9  65326 

我看过Renaming/mapping labels,但这似乎是为列标题和索引。我想重命名实际值。我该怎么做呢?

+0

对不起,这些值不止一次出现?你只是想添加标签字符串还是你想要替换值? – EdChum

+0

'labelID'中的值只会出现一次。这个数据帧是'groupby'的结果,所以我应该只有每一次。我想用有用的字符串替换ID,因为我将绘制这些用于演示文稿,标签比整数更有用。 – NewGuy

回答

1

可以使用map一系列替换值(或者,如果你想在整个数据帧中替换你可以使用的数据帧)。


import pandas as pd 

label_map = { 
    1: 'label 1', 
    2: 'label 2', 
    3: 'label 3', 
    4: 'label 4', 
    5: 'label 5', 
    6: 'label 6', 
    7: 'label 7', 
    8: 'label 8', 
    9: 'label 9', 
} 

df = pd.read_clipboard() 
df['labelID'] = df['labelID'].map(label_map) 
print df.to_string(index=False) 

您需要的值映射到标签的字典。那么这本词典是传递给map功能,这是您要重新标记

df['labelID'] = df['labelID'].map(label_map) 

这改变了使用新标签(我已经印它没有指数相匹配的格式数据帧的系列应用你的问题)

labelID count 
label 1 185302 
label 2 137777 
label 3 247434 
label 4 136571 
label 5 39724 
label 6 46959 
label 7 88471 
label 8 109182 
label 9 65326 
1

演员之列,以str类型(假设D型是数字在这里)使用astype,然后只需添加前缀:

In [35]: 
df['labelID'] = 'label ' + df['labelID'].astype(str) 
df 

Out[35]: 
    labelID count 
0 label 1 185302 
1 label 2 137777 
2 label 3 247434 
3 label 4 136571 
4 label 5 39724 
5 label 6 46959 
6 label 7 88471 
7 label 8 109182 
8 label 9 65326 
+0

这看起来像只适用于我的例子。如果我的标签不容易使用ID构建(例如:1 =“布朗”,2 =“红色”,3 =“紫色”),我是否需要为每个可能的值做到这一点? – NewGuy

+0

然后,你必须像其他答案一样“映射”,但对我来说有点不清楚,因此我的评论,你的样本有点过于基本 – EdChum