2015-09-23 38 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