私はPythonの初心者で、特定のカテゴリに対して複数のランダムな行を取得しようとしています。元のファイルには3つの列がありますが、私が興味を持っているのはそれらのカテゴリの1つにすぎません。ファイル(csv)は次のようになります。
No,Size,Name
10,1346,Cat
24,423,Dog
289,590,Cat
12,302,Dog
351,33,Cat
51,812,Dog
91,778,Cat
1193,465,Cat
44,178,Dog
どの行も同一ではなく、「名前」ごとにランダムに3行を取得したいと思います。これは私がこれまでに持っているものです:
import random
with open('C:\Users\Owl\file.csv') as f:
lines = f.readlines()[1:] #Skip heading
for line in lines:
try:
name = line[2]
except:
continue
for name in lines:
for lines in random.sample(lines,3):
print lines
f.close()
しかし、私はこのようなものを手に入れます:
12,302,Dog
1193,465,Cat
10,1346,Cat
2
3
D
このようなものの代わりに:
1193,465,Cat
10,1346,Cat
91,778,Cat
51,812,Dog
44,178,Dog
12,302,Dog
私が今得ている出力では、「名前」による行は得られず、その後はどういうわけか文字/数字だけが得られます。次に、「ValueError:sample large thanpopulation」を取得して終了します(実際のファイルはここの例よりもはるかに大きいです)。
また、可能であれば、出力の「名前」で並べ替える簡単な方法はありますか?
私はこれをインターネットで何時間も調べて苦労してきましたが、解決できませんでした...誰か助けてくれませんか?皆さん、ありがとうございました!