我一直在使用 pandas 库和交叉表来创建一个频率数据框来处理数据。在我在 csv 中读取的以下代码中,创建一个数据框,然后创建一个交叉表,它是一个频率数据框。然后我得到数据的横截面以提取列和下面的数据。
def dataforgraphs():
d = readcsv()
df = DataFrame(d)
d1=df[1]
d0=df[0]
d2=df[2]
d3=df[3]
d4=df[4]
cta = pd.crosstab(d0,[d2,d1,d3],rownames=['Date'],colnames=['RigStat','Prov','Obj'], margins=False)
ndfABA= ndf.xs('AB', level='Prov', axis=1)
ABrigs = ndfAB.xs(['BIT','GAS','OIL'],axis=1)
现在从这里开始,我遇到了无法拉出假设列上的横截面的问题,该列将包括所有没有标签“BIT”、“GAS”或“OIL”的空白值。在 excel 数据透视表中,我可以通过在选择要包含在数据透视表中的列时选中(空白)框来做到这一点。我想在这里做同样的事情来获得所有空白的频率计数。
有什么建议么?
目前我得到以下输出,它只指定了三列和下面的频率。
OIL GAS BIT
Date
01-01-2007 1 6 3
01-02-2007 2 4 4
01-03-2007 1 6 3
01-04-2007 5 6 4
01-05-2007 1 7 3
01-06-2007 6 6 6
01-07-2007 1 8 3
01-08-2007 5 6 6
01-09-2007 1 6 3
01-10-2007 1 7 3
相反,我想获得以下内容,其中包括所有未列为 OIL、GAS 或 BIT(或就此事项列为任何内容)的空白值的列。
OIL GAS BIT "blank'
Date
01-01-2007 1 6 3 10
01-02-2007 2 4 4 11
01-03-2007 1 6 3 12
01-04-2007 5 6 4 10
01-05-2007 1 7 3 1
01-06-2007 6 6 6 4
01-07-2007 1 8 3 5
01-08-2007 5 6 6 2
01-09-2007 1 6 3 5
01-10-2007 1 7 3 2
进入 pandas 交叉表数据框的数据结构如下:
Date Obj Operator Type Address
01-01-2007 OIL ABC HZ 112 W Ave
01-01-2007 GAS ABC HZ 112 W Ave
01-01-2007 GAS ABV HZ 113 W Ave
01-01-2007 BIT NCH HZ 114 W Ave
01-01-2007 CNR HZ 115 W Ave
01-02-2007 OIL CNRL HZ 112 W Ave
01-02-2007 OIL CNRL HZ 112 W Ave
01-02-2007 OIL CNRL HZ 112 W Ave
01-03-2007 CNRL HZ 112 W Ave
01-03-2007 CNRL HZ 112 W Ave
从这里开始,pandas 交叉表将创建一个频率表,该表将按日期捕获 OIL、GAS、BIT 的频率,但我找不到如何获取空白值计数。注意有些列没有列出 Obj。这些是我希望能够查询的交叉表中未捕获的值。
有什么建议么?