我有一个这样的数据框
df=
a b
54 12
54 16
18 3
3 33
我想重命名从开始的条目,0
并返回类似以下内容的内容:
df1=
a b
0 1
0 2
3 4
4 5
IIUC,您可以通过以下方式获取数据框中唯一值的列表:
In [1]: pd.Series(df.values.flatten()).unique()
Out[1]: array([54, 12, 16, 18, 3, 33])
让我们分成几个系列(您会明白为什么):
In [2]: series = pd.Series(pd.Series(df.values.flatten()).unique())
In [3]: series
Out[3]:
0
0 54
1 12
2 16
3 18
4 3
5 33
现在,您需要做的就是用上述系列的索引替换原始值。
对于给定的值,例如16
,这是您的操作方法:
In [4]: series[series==16].index[0]
Out[4]:
2
现在,您可以使用lambda函数将其应用于整个数据框。该方法applymap
将lambda函数分别应用于每个元素:
In [5]: df.applymap(lambda x: series[series==x].index[0])
Out[5]:
a b
0 0 1
1 0 2
2 3 4
3 4 5
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句