如何从python中的pandas库中提取交叉表中的各个列?
我有以下代码:如何从python中的pandas库中提取交叉表中的各个列?,python,pandas,crosstab,Python,Pandas,Crosstab,我有以下代码: def readcsv(): csv_data = read_csv(file,usecols=[0,1,24,25,26],parse_dates=[0],dtype=object) csv_data1 = csv_data.values return csv_data1 def main(): d = readcsv() df = DataFrame(d) d1=df[1] d0=df[0] d2=df[2
def readcsv():
csv_data = read_csv(file,usecols=[0,1,24,25,26],parse_dates=[0],dtype=object)
csv_data1 = csv_data.values
return csv_data1
def main():
d = readcsv()
df = DataFrame(d)
d1=df[1]
d0=df[0]
d2=df[2]
d3=df[3]
d4=df[4]
ct = pd.crosstab(d0,[d2,d1,d3],rownames=['Date'],colnames=['RigStat','Prov','Obj'], margins=False)
在这一步中,结果是一个表格:
RigStat DRILL ... MIR \
Prov AB BC ... MB SK
Obj BIT BRN CBM GAS NON OIL SVC WST WTR NON ... OIL GAS
Date ...
2006-08-22 15 1 20 235 0 63 4 0 0 0 ... 1 4
2006-08-29 17 1 24 242 0 61 5 0 1 0 ... 0 5
2006-09-06 14 0 22 210 0 50 4 0 0 0 ... 1 4
2006-09-12 13 0 21 230 0 60 4 0 0 0 ... 0 3
2006-09-19 14 0 7 155 0 35 2 1 1 1 ... 2 2
现在,我希望能够创建一个新表,只包括“Drill”下的那些列,我如何才能做到这一点?我甚至无法在这里提取单个列,因为Dataframe
是按日期索引的
有什么建议吗?
newdf=ct['DRILL']
应该这样做
或者,您可以选择一个横截面:
newdf=ct.xs('DRILL',level='RigStat',axis=1)
我尝试了这两种方法,但仍然得到一个错误。对于第一个,输出为:KeyError:“Drill”。对于第二个解决方案,输出为:keyrerror:“Drill”。不确定在这里要做什么,下面的值是频率。抱歉'Drill'
应该是'Drill'
(所有大写)@carevans88Dude非常感谢您的帮助。我已经在这方面胡闹了几天,没有意识到这个电话是区分大小写的。再次感谢你的帮助。这是我在这里的第一篇帖子,他们来到这里的社区给我留下了深刻的印象!