我有以下 Dataframe
type_x Range myValname
0 g1 0.48 600
1 g2 0.30 600
2 g3 0.62 890
3 g4 0.75 890
我想获取以下 Dataframe
type_x Range myValname newCol
0 g1 0.48 600 c1
1 g2 0.30 600 c1
2 g3 0.62 890 c2
3 g4 0.75 890 c2
c1
和c2
的意义在于,如果type_x
值的myValname相同,则可以将这两个值视为相同的值。
我的想法是将其转换为字典并Map一些值,但无法得到结果。
df3['newCol'] = df3.groupby('myValname').rank()
2条答案
按热度按时间vbopmzt11#
得到
在
.ngroup()
之后,这里是:与PD.factorize的替换:
其中,现在pd.factorize将0、1、...赋给“myValname”中的每个唯一值,并且之后进行与之前相同的修改。
uqdfh47h2#
您可以使用df. assign()、df. apply()和np. where()函数基于另一列的值向DataFrame添加/追加新列,并在添加新列后返回新的Dataframe。