我正在阅读包含表单数据的csv文件。
person,1,125,321,123,532
person,1,123,521,123,632
person,10,324,345,12,456
chair,7000,123,45,12,643
我可以用my_data = np.genfromtxt(filename,delimiter=",",dtype=None)
阅读
然后我有一个ndarray。
我想根据他们的第二列值重新订购它们。 输出应该是
形式的ndarray[
[[person,1,125,321,123,532],[person,1,123,521,123,632]]
[person,10,324,345,12,456]
[chair,7000,123,45,12,643]
]
我的方式是
my_data = np.genfromtxt(filename,delimiter=",",dtype=None)
tem = []
for x in range(0,8000,22):
fake_array=([a_value for a_value in my_data if (a_value[1]==x)])
if (len(fake_array)>0):
tem.append(fake_array)
这给了我写作结果但我觉得这是一个非常糟糕的方法。 谁能建议我这样做的优化方法? 特别是因为I迭代从0到8000,即使可能只有10个值。 并嵌套在迭代遍历数组的所有行中。
我认为也可以使用函数numpy.unique https://docs.scipy.org/doc/numpy/reference/generated/numpy.unique.html。 我不确定如何实施它?
答案 0 :(得分:0)
你应该在这里使用python库<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
,而不是试图在numpy中做所有事情(它对你正在做的事情来说太低了)。有了大熊猫,您可以通过以下方式来实现:
pandas
答案 1 :(得分:0)
就这样做,
my_data = my_data[my_data[:,1].argsort()]
答案 2 :(得分:0)
尝试使用以下代码:
df = pd.read_csv("D:/path/test.csv",header=None,sep=',')
df=df.rename(columns={0:"Name",1:"Value1",2:"Value2",3:"Value3",4:"Value4",5:"Value5"})
df=df.sort_values(by="Value1")
您将获得以下输出:
Name Value1 Value2 Value3 Value4 Value5
0 person 1 125 321 123 532
1 person 1 123 521 123 632
2 person 10 324 345 12 456
3 chair 7000 123 45 12 643