Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 限制文件中的索引_Python_Pandas - Fatal编程技术网

Python 限制文件中的索引

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

我不确定我是否会正确描述这一点,但我会尝试

我有几个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_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