Pandas:通过映射现有列来创建新索引列

时间:2018-02-05 19:58:24

标签: python-3.x pandas

我有一个专栏

col1
----
a
b
c
a
c
b

我有这样的映射:

KI13232:a
MK25436:b
SL365487:c 

这意味着,创建一个名为ID的新列,并且a col1 IDKI13232ID col1 ---- ----- KI13232 a MK25436 b SL365487 c KI13232 a SL365487 c MK25436 b 的所有匹配项应为<c:if test="${count > 3}"> your logic </c:if> ,同样适用于b和c值。

结果如下:

sealed trait List[+A]
  case object Nil extends List[Nothing]
  case class Cons[+A] (head: A, tail: List[A]) extends List[A]

我有一个更大的数据集来实现它。 Pandas实现这一目标的最佳方法是什么。

2 个答案:

答案 0 :(得分:2)

mapDATABASE_URL一起用于价值为dict comprehension的互换键:

dict

或类似的:

d = {'KI13232':'a','MK25436':'b','SL365487':'c'}

df['ID'] = df['col1'].map({v:k for  k, v in d.items()})
df['ID'] = df['col1'].map(dict(zip(d.values(),d.keys())))

如果列的顺序很重要,请添加insert

print (df)
  col1        ID
0    a   KI13232
1    b   MK25436
2    c  SL365487
3    a   KI13232
4    c  SL365487
5    b   MK25436

索引:

df.insert(0, 'ID', df['col1'].map({v:k for  k, v in d.items()}))
print (df)
         ID col1
0   KI13232    a
1   MK25436    b
2  SL365487    c
3   KI13232    a
4  SL365487    c
5   MK25436    b

答案 1 :(得分:2)

借用Jez的词典

df['New']=df.col1.replace(d.values(),d.keys())
df
Out[921]: 
  col1       New
0    a   KI13232
1    b   MK25436
2    c  SL365487
3    a   KI13232
4    c  SL365487
5    b   MK25436