tsukuba-kdbのcsvからjson作成
import pathlib
import json
import pandas as pd
import requests
# ダウンロード
def fetch_file(url, dir="."):
p = pathlib.Path(dir, pathlib.PurePath(url).name)
p.parent.mkdir(parents=True, exist_ok=True)
r = requests.get(url)
r.raise_for_status()
with p.open(mode="wb") as fw:
fw.write(r.content)
return p
url = "https://github.com/Make-IT-TSUKUBA/alternative-tsukuba-kdb/raw/master/kdb_20210404.csv"
csv_path = fetch_file(url)
df = pd.read_csv(
csv_path,
skiprows=3,
header=None,
usecols=[0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 17, 18, 19],
)
# A列が空白の行を削除
df.dropna(subset=[0], inplace=True)
# 科目番号の上がタイトルのため1行ずらして、科目番号以降を補完
df[20] = df[0].shift()
df[20] = df[20].where(df[0] == "科目番号").fillna(method="ffill")
# 行内の欠損以外をカウント ※下の確認用
df.notnull().sum(axis=1).value_counts()
# 科目番号の行(ヘッダー)、行内に5項目以上ない行は削除
df1 = df[df[0] != "科目番号"].dropna(thresh=5)
# 欠損を空文字に置換
df1.fillna("", inplace=True)
# 改行前後の空白を削除
df1[10] = df1[10].apply(
lambda s: "\n".join([i.strip() for i in s.strip().splitlines()])
)
df1[11] = df1[11].apply(
lambda s: "\n".join([i.strip() for i in s.strip().splitlines()])
)
result = []
# Q行が空白の場合削除
for d in df1.values.tolist():
if not d[13]:
d.pop(13)
result.append(d)
# JSON変換
with open("kdb.json", "w", encoding="utf-8") as fp:
json.dump(result, fp, indent="\t", ensure_ascii=False)
Author And Source
この問題について(tsukuba-kdbのcsvからjson作成), 我々は、より多くの情報をここで見つけました https://qiita.com/barobaro/items/cfcc47db9dd09fd9a476著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .