ローカルのcsvを元にpandasで新たにcsvを作成する
次のcsvがローカルにあるとします。
sample.csv
id,age,name,money
111,11,sato,1100
222,22,suzuki,20000
333,33,takahashi,330000
444,44,tanaka,440000
555,55,ito,500000
666,66,yamamoto,800000
777,77,nakamura,1000000
これを元に以下を満たすcsvを新たに作成します。
- csvのデータを一部並び替えたい
- 固定のヘッダー名+1行のcsvを元のcsvの行数分作成したい
- 新規作成するcsvのファイル名は既存データを元に命名する
実行環境
- MacOS 10.15.5
- Python 3.7.3
- pyenv 1.2.19
- pip 20.1.1
- pandas 1.0.5
コード
gencsv.py
import pandas as pd
id_list = []
age_list = []
name_list = []
money_list = []
read_csvfile = 'sample.csv'
def stack_data():
global name_list
global id_list
global age_list
global money_list
# csvからデータを読みこむ
data = pd.read_csv(read_csvfile)
# 各リストに格納する
for name in data['name']:
name_list += [name]
for i in data['id']:
id_list += [i]
for age in data['age']:
age_list += [age]
for money in data['money']:
money_list += [money]
def generate_csv():
# 取得したデータをデータフレームに代入する
for i in range(len(name_list)):
df = pd.DataFrame({
'name': name_list[i],
'age': age_list[i],
'money': money_list[i],
},index=[i,])
csv_title = 'personID=' + str(id_list[i]) + '.csv'
# データフレームを元にcsvを生成する
df.to_csv(csv_title, index=False)
print(csv_title+'が生成されました')
print("全て作成完了")
stack_data()
generate_csv()
実行結果
$ python3 gencsv.py
personID=111.csvが生成されました
personID=222.csvが生成されました
personID=333.csvが生成されました
personID=444.csvが生成されました
personID=555.csvが生成されました
personID=666.csvが生成されました
personID=777.csvが生成されました
全て作成完了
終わりに
- 何かありましたらコメントお願いいたします。