【发布时间】:2018-07-28 14:41:11
【问题描述】:
Dataframe df 包含一个 ID 变量,其中包含观察组的 ID。但是 ID 值有“洞”(可以是 1,3,4,7 而没有 0,2,5,6)。
df = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6 ], 'b': [7, 8 , 9, 10, 11, 12],
'id': [1, 4, 4, 7, 3, 1]})
a b id
0 1 7 1
1 2 8 4
2 3 9 4
3 4 10 7
4 5 11 3
5 6 12 1
我的目标是用一个新的ID变量替换现有的ID变量,从0开始到我在原始ID变量中拥有的最大ID数,例如。
df2 = pd.DataFrame({'a': [1, 2, 3, 4, 5, 6 ], 'b': [7, 8 , 9, 10, 11, 12],
'id': [0, 2, 2, 3, 1, 0]})
a b id
0 1 7 0
1 2 8 2
2 3 9 2
3 4 10 3
4 5 11 1
5 6 12 0
你知道怎么做吗?
感谢您的宝贵时间!
【问题讨论】:
-
你基本上是在寻找一个密集的排名,只是从 0 而不是 1 开始,例如
(df["id"].rank(method='dense')-1).astype(int)。不过,我确定这是重复的,所以我现在正在寻找一个。 -
@DSM 我找到了合适的目标。
标签: python python-3.x pandas dataframe