パンダを使い始めたばかりなので、無知を許してください。
行と列の数が多いcsvファイルがあるとします。
ID, Name, Number, SomethingElse
1, John, 234234, "word"
2, Dave, 2342423, "word2"
3, John, 54365345, "word3"
Nameの一意の値のみを使用して新しいcsvを作成したいと思います。使ってます:
unique = df.Name.unique()
新しいDataFrameを取得するには?すべての一意の名前を使用しますが、この新しいDFを使用して各名前を検索し、その名前のすべての値を使用して新しいファイルを作成する方法を理解できません。
file1.csv
ID, Name, Number, SomethingElse
1, John, 234234, "word"
3, John, 54365345, "word3"
file2.csv
ID, Name, Number, SomethingElse
2, Dave, 234234, "word2"
通常、Python3ではセットを使用してからネストされたループを使用しますが、データフレームが実際に何であるかについての基本的な理解が不足していると思います。
可能であれば、ファイル名をname
値で変更するJohn.csv
かDave.csv
、DataFrame.groupby
オブジェクトごとにループしますDataFrame.to_csv
。
for i, g in df.groupby('Name'):
g.to_csv(f'{i}.csv', index=False)
小文字のファイル名の場合は、lower()
次を追加します。
for i, g in df.groupby('Name'):
g.to_csv(f'{i.lower()}.csv', index=False)
また、ソリューションはboolean indexing
フィルタリングに使用できます。
for v in df.Name.unique():
df[df['Name'] == v].to_csv(f'{v.lower()}.csv', index=False)
以下のためのソリューションfile1.csv
、file2.csv
とenumerate
:
for j, (i, g) in enumerate(df.groupby('Name'), 1):
g.to_csv(f'file{j}.csv', index=False)
または:
for j, v in enumerate(df.Name.unique(), 1):
df[df['Name'] == v].to_csv(f'file{j}.csv', index=False)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加