创建一个函数,在不使用 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