如何在使用日期时间时对多个列表进行排序

How to sort multiple lists while using datetime

提问人:Reina297 提问时间:1/8/2023 最后编辑:Reina297 更新时间:1/8/2023 访问量:111

问:

我需要按日期对 csv 文件中的应用程序评论进行排序,以便以后使用 matplotlib 制作散点图。

我目前的代码是:

def example():
    date = []
    positive = []
    negative = []
    ratings = []
    for row in app_data:
        date.append(row[0])
        positive.append(row[3])
        negative.append(row[2])
        ratings.append(row[4])
    final = sorted(zip(date, negative, positive, ratings), reverse=True)
    final.sort(key=lambda date: datetime.datetime.strptime(date, "%m/%d/%Y"))
    print(final)    `

问题是我只能使用 datetime 将日期按正确的顺序排序,但我需要所有列表的顺序相同,以免混淆评论。

在我读入的列之后,我的 csv 文件中有额外的数据,如果这会影响答案的话。

还值得一提的是,一些评论也有相同的日期。

我的数据示例如下:

DATE,NAME,NEGATIVE REVIEW,POSITIVE REVIEW,RATING GIVEN
03/10/2005,teams,No Negative, very easy to use,8
03/10/2005,skype,i hate this app, No Positive,2.5
12/26/2005,skype,hard to navigate initially, easy to use once you learn the layout,6
07/10/2006,instagram,this app ruined my life,No Positive,1.5

谢谢。

python list matplotlib 日期时间

评论

0赞 Samwise 1/8/2023
如果您在将所有内容拆分为四个单独的列表之前进行排序,问题会更容易吗?将所有内容拆分为四个单独的列表实际上会让其他事情变得更容易吗?
0赞 ali bakhtiari 1/8/2023
您可以使用 Pandas 或 Numpy 之类的东西将数据存储为表格,并根据您想要的任何内容进行排序。这样,所有东西都会随着排序后的物品而改变。
0赞 Davi A. Sampaio 1/8/2023
您能否提供您的数据样本,以便我们进行处理?
0赞 Reina297 1/8/2023
我的数据的一个例子是: 日期,名称,负面评论,正面评论,给出的评级 03/10/2005,团队,没有负面,非常容易使用,8 03/10/2005,SKYPE,我讨厌这个应用程序,没有正面,2.5 12/26/2005,SKYPE,最初很难导航,一旦你学会了布局,就很容易使用,6 07/10/2006,INSTAGRAM,这个应用程序毁了我的生活,没有正面,1.5

答:

0赞 Dr. Abrar 1/8/2023 #1

这可能会有所帮助

import pandas as pd
rows = [['02/04/2022', 'good','not good', 4.2],
        ['02/03/2022', 'good','not good', 4.2],
        ['01/01/2022', 'good','not good', 4.2],
        ['04/04/2022', 'good','not good', 4.2],
        ['02/03/2022', 'good','bad', 4.2],
        ['02/03/2022', 'very Good','not good', 4.2],
        ['02/03/2022', 'Best','not good', 4.2],]

df = pd.DataFrame(rows)
#use df.sort_values(column) for single column and use list of columns name for sorting on multiple columns
#0 and 1 are columns name
df = df.sort_values([0,1,2])

如果要对多列上的数据进行排序,则仅当第一列中存在重复时,第二列才起作用。在上面的代码中,所有内容都会被排序,如果 中的值相同,那么就会对值进行排序。如果两者的值相同,则将起作用。column 0column 0column 1column 0 and 1column 2

编辑这也适用于您的数据

0赞 Arda Yılmaz 1/8/2023 #2

您可以使用模块按日期进行比较。 将字符串数据转换为 DateTime 对象。为了通过另一个操作对某些内容进行排序,有一个名为 的参数。这是执行此操作的简单方法:datetimedatetime.strptimekey

from datetime import datetime
data = [['02/04/2022', 'good','not good', 4.2],
        ['02/03/2022', 'good','not good', 4.2],
        ['01/01/2022', 'good','not good', 4.2],
        ['04/04/2022', 'good','not good', 4.2],
        ['02/03/2022', 'good','bad', 4.2],
        ['02/03/2022', 'very Good','not good', 4.2],
        ['02/03/2022', 'Best','not good', 4.2],]
sorted_data = sorted(data, key=lambda x: datetime.strptime(x[0],"%d/%m/%Y"))
print(*sorted_data,sep="\n")

您也可以通过更改此部分来更改日期格式:

“%d/%m/%Y”