Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
Pandas 日期列移动,不再可调用_Pandas_Date_Sorting - Fatal编程技术网

Pandas 日期列移动,不再可调用

Pandas 日期列移动,不再可调用,pandas,date,sorting,Pandas,Date,Sorting,我使用pandas groupby按pm25值对重复日期进行分组,得到一个平均值。但是,当我使用groupby函数时,数据帧的结构会发生变化,我无法再调用“Date”列 使用groupby还会更改我的数据结构:它不是按1/1/19、1/2/19排序,而是按1/1/19、1/10/19、1/11/19排序 这是我目前的代码: 在使用df.groupby之前,我的df如下所示: 我使用groupby: df.groupby('Date').mean('pm25') print(df) 之后,我

我使用pandas groupby按pm25值对重复日期进行分组,得到一个平均值。但是,当我使用groupby函数时,数据帧的结构会发生变化,我无法再调用“Date”列

使用groupby还会更改我的数据结构:它不是按1/1/19、1/2/19排序,而是按1/1/19、1/10/19、1/11/19排序

这是我目前的代码:

在使用df.groupby之前,我的df如下所示:

我使用groupby:

df.groupby('Date').mean('pm25')
print(df)

之后,我不能再调用“日期”列或对该列进行排序

print(df['Date'])
正好

KeyError: 'Date'
请帮忙,或者让我知道我还能提供什么

使用groupby还会更改我的数据结构:它不是按1/1/19、1/2/19排序,而是按1/1/19、1/10/19、1/11/19排序

这是因为
Date
列类型是string而不是datetime。在字符串比较中,
1/10/19
的第三个字符
1
小于
1/2/19
的第三个字符
2
。如果要保留原始序列,可以执行以下操作

df['Date']=pd.to_datetime(df['Date'])#将日期列转换为日期时间类型
df['Date']=df['Date'].dt.strftime(“%m/%d/%y”)#将datetime转换为其他格式(但列的数据类型将为string)
之后,我不能再调用“日期”列或对该列进行排序

print(df['Date'])
这是因为在groupby
Date
列之后,返回的数据帧将使用groupby之后的
Date
列作为索引来表示每个组

          pm25
Date
01/01/19  8.50
01/02/19  9.20
01/03/19  7.90
01/04/19  8.90
01/05/19  6.00
执行
df.groupby('Date').mean('pm25')
后,上面返回的数据框表示
01/01/19
组的平均值
pm25
为8.50,以此类推

如果要从索引中检索
Date
列,可以在groupby之后执行
reset_index()

df.groupby('Date')。平均值('pm25')。重置索引()

       Date  pm25
0  01/01/19  8.50
1  01/02/19  9.20
2  01/03/19  7.90
3  01/04/19  8.90
4  01/05/19  6.00
5  01/06/19  6.75
6  01/11/19  8.50
7  01/12/19  9.20
8  01/21/19  9.20
或者将to
False的
as_index
参数指定为

df.groupby('Date',as_index=False)。平均值('pm25'))

日期现在是索引,因此df.index或使用df.reset_index(),那么df['date']应该可以工作只需使用
.reset_index()
到df.groupby()行这就解决了它!非常感谢。