我正在尝试将下表从混合数据类型转换为数字
利益相关者 | 产品(CWS) | 信用相关 |
---|---|---|
合作伙伴关怀 | Webroot | BR-1278 |
NOC - 太平洋标准时间 | RMM - 脚本查询 | BR-1460 |
我尝试使用以下代码
'datac['Stakeholder'] = pd.to_numeric(datac['Stakeholder'], errors='coerce').astype('Int64')'
并且输出正在将列转换为空白单元格和 0。
答案 0 :(得分:0)
我不确定你想做什么。
问题是您不能使用 astype
将任意字符串转换为 int,因为不清楚例如“abc”应该被转换。
转换为 0
和 1
但是您可以使用 try
来检查是否可以进行转换。如果不是:您分配了一个 0
像这样:
def convert_to_int(col):
numbers = []
for el in col:
try:
int(el) # Check if conversion to int is possible
number = 1 # assign 1 if conversion successful
except:
number = 0 # else: assign a 0
numbers.append(number)
return numbers
# Example data
data = {"Stakeholder":["Partner Care", "NOC - PST", "12", "0", "Other Stakeholder"]}
df = pd.DataFrame(data)
# Convered df
df["Stakeholder_ints"] = convert_to_int(df["Stakeholder"])
转换为数字类别
from sklearn.preprocessing import LabelEncoder
data = {"Stakeholder":["Partner Care", "NOC - PST", "12", "0", "Other Stakeholder"]}
df = pd.DataFrame(data)
col = df["Stakeholder"]
le = LabelEncoder()
df["Stakeholder_cats"] = le.fit_transform(col)