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
.