首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换Python中的字符串值

替换Python中的字符串值
EN

Stack Overflow用户
提问于 2022-04-28 05:21:28
回答 2查看 108关注 0票数 0

我有一个名为"status“的列,里面满是字符串值,要么是”合法“,要么是”网络钓鱼“。我试图将它们转换为0表示“合法”,或1表示“网络钓鱼”。目前,我的方法是将“合法”替换为字符串值"0",将“钓鱼”替换为字符串值" 1 ",然后将字符串"0“和"1”转换为int值0和1。

TypeError:'(0,状态合法名称: 0,dtype: object)‘是无效密钥

使用下面的代码,我做错了什么?

代码语言:javascript
复制
df2 = pd.read_csv('dataset_phishing.csv', usecols=[87], dtype=str)

leg = 'legitimate'
phi = 'phishing'
for i in df2.iterrows():
if df2[i] == leg:
df2[i].replace('legitimate', '0')
else if df2[i] == phi:
df2[i].replace('phishing', '1')
EN

回答 2

Stack Overflow用户

发布于 2022-04-28 06:44:20

在这里,iterrow给出了不能用作索引的元组,这就是为什么您会得到该错误。以下是一个简单的解决方案:

代码语言:javascript
复制
import pandas as pd
df2=pd.DataFrame([["legitimate"],["phishing"]],columns=["status"])
leg = 'legitimate'
phi = 'phishing'
for i in range(len(df2)):
    df2.iloc[i]["status"]='1' if df2.iloc[i]["status"]==phi else '0'
print(df2)

这里有更多的pythonic方法来做到这一点:

代码语言:javascript
复制
import pandas as pd
import numpy as np
df2=pd.DataFrame([["legitimate"],["phishing"]],columns=["status"])
leg = 'legitimate'
phi = 'phishing'
df2["status"]=np.where(df2["status"]==phi,'1','0')
print(df2)

希望这对你有帮助

票数 0
EN

Stack Overflow用户

发布于 2022-04-28 10:09:24

以下是另一种方法

代码语言:javascript
复制
import pandas as pd
import numpy as np
data = {'status': ["legitimate", "phishing"]}
df = pd.DataFrame(data)
leg = 'legitimate'
phi = 'phishing'
df.loc[df["status"] == leg, "status"] = 0
df.loc[df["status"] == phi, "status"] = 1
print(df)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72038370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档