首页 > 解决方案 > 我正在尝试通过根据 2 列对其进行排序来组织我的 csv 数据

问题描述

我实际上是从以前回答过这个问题的时候提取了我的代码。但是,我的输出不是我预期的。我正在通过仅 2 列组织一个精炼的数据集。这是我正在使用的精炼数据集 sp:

      ACC_TIME     COUNTY_NAME
978       0:01         Harford
952       0:01    Anne Arundel
995       0:01  Prince Georges
1059      0:01         Carroll
941       0:01  Prince Georges
...        ...             ...
17535     9:12       Frederick
17536     9:12       Frederick
17251     9:12    Anne Arundel
17507     9:12      Dorchester
18636     9:12       Frederick

sp 只是 df,删除了特定的列。这是我的代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import csv
from operator import itemgetter
from datetime import datetime
import operator



df=pd.read_csv("2012CarCrashes.csv")
df.drop(['ACC_TIME_CODE','ROAD', 'INTERSECT_ROAD','DIST_FROM_INTERSECT', 'CITY_NAME', 
         'DIST_DIRECTION', 'COUNTY_CODE', 'VEHICLE_COUNT', 'PROP_DEST', 
         'COLLISION_WITH_2', 'CASE_NUMBER', 'BARRACK'], axis=1,inplace=True) #--> inplace=True means to update the df file

df["ACC_DATE"]= pd.to_datetime(df["ACC_DATE"])  #-->converts datatype to datetime

df = df.sort_values('ACC_TIME') #-->sorts according to time of accident
.
.
.
.
sp =df.drop(['ACC_DATE','DAY_OF_WEEK','INJURY','COLLISION_WITH_1'],axis=1)

#Next, how can I organize the data by county and time of accidents? 

sp1 = sorted(sp, key=operator.itemgetter(0, 1))
print(sp1)

这是我不断得到的输出:

['ACC_TIME', 'COUNTY_NAME']

看,它只打印两列的标题,没有别的。

我可能做错了什么?

标签: pythoncsvsorting

解决方案


使用 DataFrame 方法对 DataFrame 进行排序。 sorted()不是 DataFrame 感知的,DataFrame 对象只是迭代它的列名:

>>> import pandas as pd
>>> df = pd.DataFrame([[2,3,4],[1,3,5],[2,1,7]],columns=['A','B','C'])
>>> df
   A  B  C
0  2  3  4
1  1  3  5
2  2  1  7
>>> df = df.sort_values(['A','B'])
>>> df
   A  B  C
1  1  3  5
2  2  1  7
0  2  3  4

推荐阅读