Pandas 日期列移动,不再可调用
我使用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: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) 之后,我
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'])
这是因为在groupbyDate
列之后,返回的数据帧将使用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
或者将toFalse的as_index
参数指定为
df.groupby('Date',as_index=False)。平均值('pm25'))
日期现在是索引,因此df.index或使用df.reset_index(),那么df['date']应该可以工作只需使用.reset_index()
到df.groupby()行这就解决了它!非常感谢。