在pandas

时间:2016-08-09 15:23:50

标签: pandas indexing dataframe

我有一个系列的数据集,其中包含我希望由索引替换的缺失值。第二列包含与第一列相同的数字,但顺序不同。

这是一个例子:

>>> 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)

但是我现在如何使用索引替换第二列的值?

感谢您的任何建议!

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