繁体   English   中英

根据循环熊猫数据框中的条件替换特定值

[英]Replace specific value based on condition in a loop pandas dataframe

编辑:

如果其他单元格上的值满足条件,我想替换单元格中的值

目前,我有这个

   for a in ACPurchased:
        aPos = self.model.grid.get_cell_list_contents(a.pos)
        CustAC = [a for a in aPos if a.breed =='AC']

        for b in CustAC:
            AC_Data = [b.AC,b.Appliance,b.COP]

            self.AC_DataPOS[self.AC_DataPOS['Category'].isin(AC_Data) &
                            self.AC_DataPOS['Appliance'].isin(AC_Data) &
                            self.AC_DataPOS['COP'].isin(AC_Data),
                            'Status'] = 'occupied'

并返回此错误:

File"/Users/widhadyah/Dropbox/MyPythonProject/ePSSMaterialModel/src/MaterialModel.py", line 275, in UpdateUsedMachineStatus
        'Status'] = 'occupied'
      File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/frame.py", line 2419, in __setitem__
        self._set_item(key, value)
      File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/frame.py", line 2485, in _set_item
        value = self._sanitize_column(key, value)
      File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/frame.py", line 2684, in _sanitize_column
        if broadcast and key in self.columns and value.ndim == 1:
      File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/indexes/base.py", line 1393, in __contains__
        hash(key)
      File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/generic.py", line 831, in __hash__
        ' hashed'.format(self.__class__.__name__))
    TypeError: 'Series' objects are mutable, thus they cannot be hashed

我尝试使用.iterrows()并仍然遇到相同的错误。 关于这个问题有什么建议吗?

先感谢您

我认为需要DataFrame.loc是因为通过布尔掩码和选择列Status链式过滤:

self.AC_DataPOS.loc[self.AC_DataPOS['Category'].isin(AC_Data) &
                            self.AC_DataPOS['Appliance'].isin(AC_Data) &
                            self.AC_DataPOS['COP'].isin(AC_Data),
                            'Status'] = 'occupied' 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM