我有一个系列的数据集,其中包含我希望由索引替换的缺失值。第二列包含与第一列相同的数字,但顺序不同。
这是一个例子:
>>> df
ind u v d
0 5 7 151
1 7 20 151
2 8 40 151
3 20 5 151
这应该是:
>>>df
ind u v d
0 1 2 151
1 2 4 151
2 3 5 151
3 4 1 151
我重新编制了行中的值' u'通过创建新列:
>>>df['new_index'] = range(1, len(numbers) + 1)
但是我现在如何使用索引替换第二列的值?
感谢您的任何建议!
答案 0 :(得分:1)
您可以使用Series.rank
,但首先需要使用unstack
创建Series
,然后再次使用DataFrame
创建unstack
:
df[['u','v']] = df[['u','v']].unstack().rank(method='dense').astype(int).unstack(0)
print (df)
u v d
ind
0 1 2 151
1 2 4 151
2 3 5 151
3 4 1 151
如果仅使用DataFrame.rank
,则v
中的输出会有所不同:
df[['u','v']] = df[['u','v']].rank(method='dense').astype(int)
print (df)
u v d
ind
0 1 2 151
1 2 3 151
2 3 4 151
3 4 1 151