【发布时间】:2021-08-11 11:08:15
【问题描述】:
我有一个数据框。 df['技能']=python、sql、java。现在对于每个字符串,我想添加随机元素(高、低、中)。例如:df['Skill']=python:high, sql:low, java:medium.
我尝试了一个代码,但它在字符串末尾添加了 score['low', 'high', 'medium']。
有人可以建议我怎么做。
score=['low','medium','high']
df[Skill']=df['Skill'].apply(lambda x:[x + ": " + "".join(w for w in random.choice(score))])
输出:
['python, java, sql: medium']
但我想要的是python: low, java: high, sql: medium
【问题讨论】:
-
lambda x: " ".join(w": "+s for w, s in zip(x.split(' '), random.choice(score, x.count(' '))))你必须通过拆分来应用每个单词 -
df['Skills']= d['Skills'].apply(lambda x: ", ".join(w +": "+s for w, s in zip(x.split (', '), random.choice(score)))) 我得到的输出是--- python: l , java: o, sql: w
-
您的“技能”列中是否有值
sql: medium或apply()给出了此结果? -
我尝试了映射并申请。两者都给了我相同的结果
-
技能列中没有 [sql: medium] 只有技能列中存在 [sql] 我得到的输出是使用应用功能