我有一个名为"status“的列,里面满是字符串值,要么是”合法“,要么是”网络钓鱼“。我试图将它们转换为0表示“合法”,或1表示“网络钓鱼”。目前,我的方法是将“合法”替换为字符串值"0",将“钓鱼”替换为字符串值" 1 ",然后将字符串"0“和"1”转换为int值0和1。
TypeError:'(0,状态合法名称: 0,dtype: object)‘是无效密钥
使用下面的代码,我做错了什么?
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')发布于 2022-04-28 06:44:20
在这里,iterrow给出了不能用作索引的元组,这就是为什么您会得到该错误。以下是一个简单的解决方案:
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方法来做到这一点:
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)希望这对你有帮助
发布于 2022-04-28 10:09:24
以下是另一种方法
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)https://stackoverflow.com/questions/72038370
复制相似问题