Py学习  »  Python

不永久改变对象的Python方法链接

Goldfishno20 • 6 年前 • 1901 次点击  

return self ,但我不确定如何实现它,以便方法不会对我的原始数据进行变异。

file 具体如下:

+--------+-----+-------+
| Person | Sex | Score |
+--------+-----+-------+
| A      | M   |    10 |
| B      | F   |     9 |
| C      | M   |     8 |
| D      | F   |     7 |
+--------+-----+-------+

MyData 这样我可以做一些基本的数据调用和过滤。

这就是我到目前为止得到的

class MyData:
    def __init__ (self, file):
        import pandas as pd
        self.data = pd.read_excel (file)
        self.Person = self.data['Person']
        self.Sex = self.data['Sex']
        self.Score = self.data['Score']

    def male_only(self):
        self.data = self.data[self.Sex=="M"]
        self.Person = self.Person[self.Sex=="M"]
        self.Score = self.Score[self.Sex=="M"]
        self.Sex = self.Sex[self.Sex=="M"]
        return self

    def female_only(self):
        self.data = self.data[self.Sex=="F"]
        self.Person = self.Person[self.Sex=="F"]
        self.Score = self.Score[self.Sex=="F"]
        self.Sex = self.Sex[self.Sex=="F"]
        return self

这似乎是可行的,但遗憾的是,我的原始数据被这段代码永久地改变了。例如:

Data = MyData(file)
Data.data
>>> Data.data
  Person Sex  Score
0      A   M     10
1      B   F      9
2      C   M      8
3      D   F      7

Data.male_only().data
>>> Data.male_only().data
  Person Sex  Score
0      A   M     10
2      C   M      8

Data.data
>>> Data.data
  Person Sex  Score
0      A   M     10
2      C   M      8

我想要一个返回相同答案的类 Data.male_only().Person Data.Person.male_only() Data.male_only().data Data.data.male_only() 没有永久变异 Data.data Data.Person .

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/54136
文章 [ 3 ]  |  最新文章 6 年前