提问人:Reina297 提问时间:1/8/2023 最后编辑:Reina297 更新时间:1/8/2023 访问量:111
如何在使用日期时间时对多个列表进行排序
How to sort multiple lists while using datetime
问:
我需要按日期对 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
谢谢。
答:
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 0
column 0
column 1
column 0 and 1
column 2
编辑这也适用于您的数据
0赞
Arda Yılmaz
1/8/2023
#2
您可以使用模块按日期进行比较。 将字符串数据转换为 DateTime 对象。为了通过另一个操作对某些内容进行排序,有一个名为 的参数。这是执行此操作的简单方法:datetime
datetime.strptime
key
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”
评论