我有一个数据框,我想在我选择的某些列中用“是”和“否”替换 0, 1 编码。一些 df 列具有这种编码,因此我编写了以下命令:
dados_trabalho = dados_trabalho.replace({"ASSINTOM": {0: "Sim", 1 : "Não"}}).replace({"DOR ATIPICA": {0: "Sim", 1 : "Não"}}).replace({"IAM": {0: "Sim", 1 : "Não"}}).replace({"HAS": {0: "Sim", 1 : "Não"}}).replace({"DM": {0: "Sim", 1 : "Não"}}).replace({"DISPLIP": {0: "Sim", 1 : "Não"}}).replace({"DOR TIPICA": {0: "Sim", 1 : "Não"}})
它运行正确并替换由新编码标识的列,但我想知道是否有办法总结这个公式,以便脚本不会变得很大。
我尝试创建函数:
def change_columns (df):
c = df.columns
df = df.replace ({c: {0: "Yes", 1: "No"}})
问题是当我在这个函数中输入数据框时,会发生以下错误:
change_columns (df)
TypeError Traceback (most recent call last)
<ipython-input-141-43eb9316b19b> in <module>
----> 1 change_columns (df)
<ipython-input-140-9fbbd4e9e293> in change_columns (df)
1 def change_columns (df):
2 c = df.columns
----> 3 df = df.replace ({c: {0: "Yes", 1: "No"}})
/usr/lib/python3/dist-packages/pandas/core/indexes/base.py in __hash __ (self)
2060
2061 def __hash __ (self):
-> 2062 raise TypeError ("unhashable type:% r"% type (self) .__ name__)
2063
2064 def __setitem __ (self, key, value):
TypeError: unhashable type: 'Index'
我从 Python 开始,所以我想我忘记了一些东西。
我在代码中更改了一些内容并且它起作用了。但问题是它在所有 df 列中应用该函数。如何仅在我想要的列而不是所有列上应用该函数?
def change_columns(df):
for i in df.columns:
df = df.replace({i: {0: "Sim", 1 : "Não"}})
return df
qq_花开花谢_0
相关分类