需要基于列值对numpy数组进行排序,但值以字符串格式存在

时间:2019-04-08 10:19:53

标签: python-3.x numpy numpy-ndarray

我是python的新手,需要从包含恐怖主义数据的csv文件中提取信息。

我需要提取人员伤亡最大的印度前5个城市,其中伤亡率=被杀死(以CSV给出)+受伤(以CSV给出)。 CSV文件中也提供了“城市”列。

输出格式应按下面的顺序从下至上

  

city_1伤亡_1_1城市_2伤亡_2city_3伤亡_3city_4   Casualty_4 city_5 Casualty_5

链接到CSV- https://ninjasdatascienceprod.s3.amazonaws.com/3571/terrorismData.csv?AWSAccessKeyId=AKIAIGEP3IQJKTNSRVMQ&Expires=1554719430&Signature=7uYCQ6pAb1xxPJhI%2FAfYeedUcdA%3D&response-content-disposition=attachment%3B%20filename%3DterrorismData.csv

import numpy as np
import csv
file_obj=open("terrorismData.csv",encoding="utf8")
file_data=csv.DictReader(file_obj,skipinitialspace=True)
country=[]
killed=[]
wounded=[]
city=[]
final=[]

#Making lists
for row in file_data:
    if row['Country']=='India':
        country.append(row['Country'])
        killed.append(row['Killed'])
        wounded.append(row['Wounded'])
        city.append(row['City'])
        final.append([row['City'],row['Killed'],row['Wounded']])


#Making numpy arrays out of lists
np_month=np.array(country)
np_killed=np.array(killed)
np_wounded=np.array(wounded)
np_city=np.array(city)
np_final=np.array(final)


#Fixing blank values in final arr
for i in range(len(np_final)):
    for j in range(len(np_final[0])):
        if np_final[i][j]=='':
            np_final[i][j]='0.0'


#Counting casualities(killed+wounded) and storing in 1st column of final array
for i in range(len(np_final)):
    np_final[i,1]=float(np_final[i,1])+float(np_final[i,2])

#Descending sort on casualities column
np_final=np_final[np_final[:,1].argsort()[::-1]]

我希望np_final对列的伤亡人数进行排序,但这不会发生,因为type(casualities)以'String'的形式出现

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我愿意为您使用Pandas。您可以更轻松地操作日期。 将所有内容读取到DataFrame。它应该将数字读为数字格式。

如果在读取数据时必须使用np,则可以简单地将值强制转换为浮点数或整数,并且如果没有其他错误,一切都可以正常工作。 像这样:

<androidx.constraintlayout.ConstraintLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_centerInParent="true"
  android:visibility="@{myVar == STRING_SUCCESS ? View.GONE : View.VISIBLE}">