0

我需要在 x 轴上绘制一些数据系列,并且我有一个 csv 文件,其中“开始时间”列充满了日期。 当我使用 DataFrame 时,我使用pandas库来操作数据。我的日期时间数据是:

输入:

print(paradas["Start time"])
    

输出:

0        31/12/2020 00:13:30
1        30/12/2020 19:30:00
2        30/12/2020 19:01:45
3        30/12/2020 19:00:10
4        30/12/2020 18:55:35
                ...         
10704    02/01/2020 08:37:33
10705    02/01/2020 08:32:33
10706    02/01/2020 08:28:03
10707    02/01/2020 08:19:03
10708    31/12/2019 02:41:01
Name: Start time, Length: 10709, dtype: object

当我处理时间数据时,我转换为datetime64[ns]对列中的所有时间戳进行分类:

输入:

paradas["Start time"]=pd.to_datetime(paradas["Start time"])
print(paradas["Start time"])

输出:

0       2020-12-31 00:13:30
1       2020-12-30 19:30:00
2       2020-12-30 19:01:45
3       2020-12-30 19:00:10
4       2020-12-30 18:55:35
                ...        
10704   2020-02-01 08:37:33
10705   2020-02-01 08:32:33
10706   2020-02-01 08:28:03
10707   2020-02-01 08:19:03
10708   2019-12-31 02:41:01
Name: Start time, Length: 10709, dtype: datetime64[ns]

现在,由于日期被颠倒了,我尝试使用以下方法将它们倒退:

输入

paradas["Start time"]=paradas["Start time"].sort_values(by=['Date'], ascending=False)
print(paradas["Start time"])

但是,由于“by”,它无法识别我的代码:

输出

TypeError                                 Traceback (most recent call last)
<ipython-input-35-d4f349ab2092> in <module>()
    126 #print(paradas["Start time"])
    127 
--> 128 paradas["Start time"]=paradas["Start time"].sort_values(by=['Date'], ascending=False)
    129 print(paradas["Start time"])
    130

TypeError: sort_values() got an unexpected keyword argument 'by'

另外,我尝试在没有参数的情况下对其进行评估,但无论如何它都不会改变任何东西。

所以我不知道我做错了什么,是元素的类型还是什么。我在另一篇文章中阅读了有关使用 的文章str,但由于我需要日期时间格式,并且我已经看到其他代码使用 评估该项目datetime64[ns],所以我几乎可以肯定它是可能的......

4

1 回答 1

0

好的,我解决了。

对于它可能关心的人来说,问题在于这paradas["Start time"]=paradas["Start time"].sort_values(by=['Date'], ascending=False)是不对sort_values()的,因为它不准备通过仅从 DataFrame 中调用列来进行操作。特别是,我的数据(写为paradas)是pandas.Dataframe格式的,并且paradas["Start time"](这只是 paradas 的一列)是pandas.Seriers格式的。

我们需要使用sort_values()格式Dataframe所以我需要将此命令应用于我的所有数据,这意味着我们必须使用paradas

输入:

paradas=paradas.sort_values(by=['Date'], ascending=False)

输出:

0        31/12/2020 00:13:30
10708    31/12/2019 02:41:01
2026     31/10/2020 05:04:06
2027     31/10/2020 04:59:06
2028     31/10/2020 04:57:46
                ...         
7642     01/04/2020 01:36:15
7643     01/04/2020 01:23:40
7644     01/04/2020 01:11:20
7645     01/04/2020 00:14:20
7646     01/04/2020 00:08:25
Name: Start time, Length: 10709, dtype: object

尽管如此,它并没有像我想要的那样排序,所以我才意识到如果我需要向后排序“开始时间”列,所以我终于做到了:

输入:

paradas=paradas.reindex(index=paradas["Start time"].index[::-1])

输出:

10708   2019-12-31 02:41:01
10707   2020-02-01 08:19:03
10706   2020-02-01 08:28:03
10705   2020-02-01 08:32:33
10704   2020-02-01 08:37:33
                ...        
4       2020-12-30 18:55:35
3       2020-12-30 19:00:10
2       2020-12-30 19:01:45
1       2020-12-30 19:30:00
0       2020-12-31 00:13:30
Name: Start time, Length: 10709, dtype: datetime64[ns]

(现在我已经更改为 datetime64[ns] 格式)这对我有用。我刚刚检查了几次文档:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sort_values.html

并将其与:

https://pandas.pydata.org/pandas-docs/version/0.22/generated/pandas.Series.sort_values.html

于 2021-04-26T07:58:59.643 回答