Python 限制文件中的索引
我不确定我是否会正确描述这一点,但我会尝试 我有几个excel文件,大约有20列和10k左右的行。假设列名的形式为col1,col2…col20 Col2是一个时间戳列,因此,例如,一个值可以是:“2012-07-25 14:21:00” 我想将excel文件读入数据框,并执行一些时间序列和分组操作 下面是一些加载excel文件的简化代码:Python 限制文件中的索引,python,pandas,Python,Pandas,我不确定我是否会正确描述这一点,但我会尝试 我有几个excel文件,大约有20列和10k左右的行。假设列名的形式为col1,col2…col20 Col2是一个时间戳列,因此,例如,一个值可以是:“2012-07-25 14:21:00” 我想将excel文件读入数据框,并执行一些时间序列和分组操作 下面是一些加载excel文件的简化代码: xl = pd.ExcelFile(os.path.join(dirname, filename)) df = xl.parse(xl.sheet_name
xl = pd.ExcelFile(os.path.join(dirname, filename))
df = xl.parse(xl.sheet_names[0], index_col=1) # Col2 above
当我跑的时候
df.index
它给了我:
<class 'pandas.tseries.index.DatetimeIndex'>
[2012-01-19 15:37:55, ..., 2012-02-02 16:13:42]
Length: 9977, Freq: None, Timezone: None
这可能就是为什么我在一些我想做的操作上有问题。例如,当我跑步时:
df.groupby[category_col].count()
我希望得到一个数据帧,每个类别有一行,一列包含该类别的计数。相反,我得到了一个数据框架,每个类别有一行,19列描述了该列/类别对的值的数量
我尝试重新采样时也会发生同样的情况:
df.resample('D', how='count')
我得到的是:
2012-01-01 Col1 8
Col2 8
Coln 8
2012-01-02 Col1 10
Col2 10
Coln 10
这是正常的行为吗?我怎样才能每天只得到一个值,category,以哪一个为准?根据韦斯·麦金尼(Wes McKinney)的博客文章,我认为问题在于我必须在特定的列上运行我的操作,也就是我知道不会丢失数据的列
因此,不要这样做:
df.groupby[category_col].count()
我应该做:
df['col3'].groupby(df[category_col]).count()
这是:
df2.resample('D', how='count')
应该是这样的:
df2['col3'].resample('D', how='count')
结果更符合我的要求:
Category
Cat1 1232
Cat2 7677
Cat3 1053
Date
2012-01-01 8
2012-01-02 66
2012-01-03 89
您的索引列是第一列还是第一列?如果它是第一个,那么您不应该传递0:
df=xl.parse(xl.sheet\u names[0],index\u col=0)
?哦,对不起,这很混乱。它是excel文件中的第二列(我的实际代码中有列名)。我将在上面更新以反映这一点。
Category
Cat1 1232
Cat2 7677
Cat3 1053
Date
2012-01-01 8
2012-01-02 66
2012-01-03 89