在pandas中,如何用标签字符串替换标签ID?

时间:2015-09-23 13:12:39

标签: python pandas

我有一个(示例)数据框,如下所示:

AddOdyDocToWorkflowRequest AddOdyDocToWorkflowRequest = new AddOdyDocToWorkflowRequest()
{
    CaseDocument = new List<CaseDocument>()
    {
        new CaseDocument() 
        {
            CaseAugmentation = new List<CaseAugmentation>(){
                new CaseAugmentation(){

                    DocumentEvent = new List<DocumentEvent>()
                    {
                        new DocumentEvent()
                        {
                            CourtDocumentEvent = new List<DocumentEventCourtDocumentEvent>()
                            {
                                new DocumentEventCourtDocumentEvent()
                                {
                                    DocumentData = CaseNumberTextBox.Text+ "," + DocumentCode
                                }
                            }
                        }
                    }
                }
            }
        }
    }
};

我想用标签名称替换labelID count 1 185302 2 137777 3 247434 4 136571 5 39724 6 46959 7 88471 8 109182 9 65326 列,以便我有这样的内容:

labelID

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

2 个答案:

答案 0 :(得分:1)

使用str将列的类型转换为astype(假设dtype为数字),然后添加前缀:

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

答案 1 :(得分:1)

您可以使用map替换系列中的值(或者,如果您希望替换整个数据框,则可以使用applymap)。

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