[英]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
目前,我要替换每列的所有唯一值,例如:
在col1
: Aba
替换为a0
, bab
替换为a1
, ccc
替换为a2
,只要它出现在列中。
与col2
类似: xxx
被替换为b0
, bhh
被替换为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.