繁体   English   中英

替换数据框中特定列中的唯一值

[英]Replace unique values in specific columns in a dataframe

我的数据框如下所示:

col1  col2  col3
Aba   xxx   yyy
bab   bhh   jjj
ccc   kkk   lll
Aba   xxx   yyy
ccc   kkk   jjj

目前,我要替换每列的所有唯一值,例如:

col1Aba替换为a0bab替换为a1ccc替换为a2 ,只要它出现在列中。

col2类似: xxx被替换为b0bhh被替换为b1等。

简而言之,第一列开始用a0,a1,a2,a3替换唯一值,第二列开始用b0,b1,b2,b3替换,第三列开始用c0,c1,c2等等。等等-使用此简单的单行代码,

import string
df = list(string.ascii_lowercase)[:len(df.columns)] + df.apply(lambda x: pd.factorize(x)[0]).astype(str)

但是我想像上述方法那样,仅将唯一值nunique()在熊猫中为nunique()函数)少于假设值50的那些列替换,并且其余列的值可以保持原样。

使用上述代码寻找解决方案,可以对其进行更改以包括此目标。 我的数据框具有数百万行和20多个列。

谢谢

我认为需要:

print (df)
  col1 col2 col3
0  Aba  xxx  jjj
1  Aba  bhh  jjj
2  ccc  kkk  jjj
3  Aba  xxx  yyy
4  ccc  kkk  jjj

#check column for number of unique values
m = df.nunique() < 3
print (m)
col1     True
col2    False
col3     True
dtype: bool

import string
#first select all possible codes and then only by condition
c = np.array(list(string.ascii_lowercase))[:len(df.columns)][m]

#apply solution only for columns by condition
df.loc[:, m] = c + df.loc[:, m].apply(lambda x: pd.factorize(x)[0]).astype(str)
print (df)
  col1 col2 col3
0   a0  xxx   c0
1   a0  bhh   c0
2   a1  kkk   c0
3   a0  xxx   c1
4   a1  kkk   c0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM