创建一个函数,在不使用 SciKit Learn 的情况下将字符串编码为二进制 - python 3
Create a function that encodes strings to binary without using SciKit Learn - python 3
正在创建一个将所有字符串 't' 和 'f' 替换为 1 和 0 的函数...
这是我所在的地方
def binary_encoding(df):
for col in df.columns:
replace_map = {'t':1, 'f': 0,}
df.columns.map(replace_map) -- not sure what to do here
return df
我尝试过伪代码,但不熟悉代码本身的实现。这里用的是replace
方法吗?我正在考虑使用字典映射值,您可能在上面有所了解。有什么指点吗?
您需要将每个 map
应用于一列并将其保存到列中
def binary_encoding(df: pd.DataFrame):
replace_map = {'t': 1, 'f': 0, }
for col in df.columns:
if df[col].isin(['f', 't']).all():
df[col] = df[col].map(replace_map)
return df
测试
df = pd.DataFrame([['f', 'g', 'h'], ['j', 'k', 't']])
print(df, "\n")
df = binary_encoding(df)
print(df)
0 1 2
0 f g h
1 j k t
0 1 2
0 0.0 NaN NaN
1 NaN NaN 1.0
根本不需要使用.apply
。只需使用 DataFrame.replace()
方法:
def binary_encoding(df):
return df.replace({"t": 1, "f": 0})
df = pd.DataFrame([['f', 'g', 'h'], ['j', 'k', 't']])
print(df)
0 1 2
0 f g h
1 j k t
new_df = binary_encoding(df)
print(new_df)
0 1 2
0 0 g h
1 j k 1
正在创建一个将所有字符串 't' 和 'f' 替换为 1 和 0 的函数...
这是我所在的地方
def binary_encoding(df):
for col in df.columns:
replace_map = {'t':1, 'f': 0,}
df.columns.map(replace_map) -- not sure what to do here
return df
我尝试过伪代码,但不熟悉代码本身的实现。这里用的是replace
方法吗?我正在考虑使用字典映射值,您可能在上面有所了解。有什么指点吗?
您需要将每个 map
应用于一列并将其保存到列中
def binary_encoding(df: pd.DataFrame):
replace_map = {'t': 1, 'f': 0, }
for col in df.columns:
if df[col].isin(['f', 't']).all():
df[col] = df[col].map(replace_map)
return df
测试
df = pd.DataFrame([['f', 'g', 'h'], ['j', 'k', 't']])
print(df, "\n")
df = binary_encoding(df)
print(df)
0 1 2
0 f g h
1 j k t
0 1 2
0 0.0 NaN NaN
1 NaN NaN 1.0
根本不需要使用.apply
。只需使用 DataFrame.replace()
方法:
def binary_encoding(df):
return df.replace({"t": 1, "f": 0})
df = pd.DataFrame([['f', 'g', 'h'], ['j', 'k', 't']])
print(df)
0 1 2
0 f g h
1 j k t
new_df = binary_encoding(df)
print(new_df)
0 1 2
0 0 g h
1 j k 1