我正在重新组织和清理我的代码,并移动了一组函数以供课堂使用。基本设置很好,一个功能很好,而其他功能则不行。代码不在类中时按预期运行,所以我怀疑我对.self
的处理有所减少。
我已经一遍又一遍地阅读代码。用另一种方式重写东西,看看我是否搞砸了。
请注意,如果pandas
中的dataFrames处理不同,我将使用它们。
下面的示例代码。
class
现在,根据from pandas import DataFrame, read_csv
class clss(object):
def __init__(self, x):
self.x1 = x # x is a pandas data frame
self.stat = defaultdict(dict)
def worker0(self, key, key0):
# Change value at given coordinates
if key in self.stat and key0 in self.stat[key]:
self.stat[key][key0] += 1
else:
self.stat[key] = dict(key0=0)
def worker1(self, key, key0)
if key in self.stat and key0 in self.stat[key]:
self.stat[key][key0] += 2
else:
self.stat[key] = dict(key0=0)
def master(self):
for a in self.x1.index:
if self.x1.loc[a, 'val'] == 1:
self.worker0(a, foo)
else:
self.worker1(a, foo)
self.worker0(a, blah)
self.x1 = DataFrame(stat).T
print(self.x1)
x = read_csv('file.csv') #index = [0, 1, 2]
c = clss(x)
c.master()
的内容,我应该得到如下输出:
x
相反,我得到:
foo blah
0 4 1
1 10 4
2 1 30
正如我所知,错误的方法是所有适当除法的值之和。但是,我不确定是否确实如此,但这似乎是正确的。
为了提供更多背景信息,我有一个 foo blah
0 15 35
1 15 35
2 15 35
,其中包含事件列表(csv
),每个事件中每个rows
中都有一些人员。如果事件是特定事件,请为特定事件中的每个人在column
中更改相关值。
编辑以改进示例并提供上下文