我有一个像这样的数据框
df=
a b
54 12
54 16
18 3
3 33
我想重命名从0
开始的条目并返回如下内容:
df1=
a b
0 1
0 2
3 4
4 5
答案 0 :(得分:1)
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