创建一个不使用 SciKit Learn 将字符串编码为二进制的函数 - python 3
Posted
技术标签:
【中文标题】创建一个不使用 SciKit Learn 将字符串编码为二进制的函数 - python 3【英文标题】:Create a function that encodes strings to binary without using SciKit Learn - python 3 【发布时间】:2021-05-26 21:11:13 【问题描述】:创建一个函数,将所有字符串 't' 和 'f' 替换为 1s 和 0s...
这就是我所在的地方
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
方法吗?我正在考虑使用字典映射值,正如您在上面可能有些理解的那样。有什么指点吗?
【问题讨论】:
你有输入的例子吗?你为什么在你的案例中使用熊猫? 【参考方案1】:根本不需要使用.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
【讨论】:
【参考方案2】:您需要将每个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
【讨论】:
这可行,但是我现在的问题是所有其他包含数字和字符串数据的列都显示为 NaN。此函数的目标是定位所有仅包含“f”和“t”的列并编码为二进制,同时保留所有其他数据。 我试过了,数据框似乎没有变化以上是关于创建一个不使用 SciKit Learn 将字符串编码为二进制的函数 - python 3的主要内容,如果未能解决你的问题,请参考以下文章
如何使用热门词创建特征向量(scikit-learn 中的特征选择)
使用带有 Pandas DataFrame 的 Scikit-Learn OneHotEncoder
如何创建虚拟变量然后使用 scikit-learn 进行聚合?