入れ子になったJSONファイルをpandas DataFrameに変換しました。いくつかの列には現在リストが含まれています。リストを含むpandas Dataframeの列を展開し、リスト値自体から列名をフェッチする方法はありますか?
0 [BikeParking: True, BusinessAcceptsBitcoin: Fa...
1 [BusinessAcceptsBitcoin: False, BusinessAccept...
2 [Alcohol: none, Ambience: {'romantic': False, ...
3 [AcceptsInsurance: False, BusinessAcceptsCredi...
4 [BusinessAcceptsCreditCards: True, Restaurants...
5 [BusinessAcceptsCreditCards: True, ByAppointme...
6 [BikeParking: True, BusinessAcceptsCreditCards...
7 [Alcohol: none, Ambience: {'romantic': False, ...
8 [BusinessAcceptsCreditCards: True]
9 [BikeParking: True, BusinessAcceptsCreditCards...
10 None
.
.
.
144070 [Alcohol: none, Ambience: {'romantic': False, ...
144071 [BikeParking: True, BusinessAcceptsCreditCards...
Name: attributes, dtype: object
と、この::細胞を充填しながら
0 [Monday 11:0-21:0, Tuesday 11:0-21:0, Wednesda...
1 [Monday 0:0-0:0, Tuesday 0:0-0:0, Wednesday 0:...
2 [Monday 11:0-2:0, Tuesday 11:0-2:0, Wednesday ...
3 [Tuesday 10:0-21:0, Wednesday 10:0-21:0, Thurs...
4 None
144066 None
144067 [Tuesday 8:0-16:0, Wednesday 8:0-16:0, Thursda...
144068 [Tuesday 10:0-17:30, Wednesday 10:0-17:30, Thu...
144069 None
144070 [Monday 11:0-20:0, Tuesday 11:0-20:0, Wednesda...
144071 [Monday 10:0-21:0, Tuesday 10:0-21:0, Wednesda...
Name: hours, dtype: object
は私が自動的にタグ(BikeParking、AcceptsInsuranceなど)を抽出し、カラム名としてそれらを使用するためにどのような方法があります彼らはこのようになりますtrue/falseの値で置き換えます。 Ambienceディクテーションでは、Ambience_romanticやtrue/falseのようなものをセル内で実行したいと考えています。同様に、曜日をColumn名として抽出し、時間を使ってセルを埋める必要があります。
以前にjsonデータを平坦化する方法はありますか?私は、jsonデータをjson_normalizeに渡し、出力からデータフレームを作成しようとしましたが、同じ結果が得られます。多分私は何か間違っているのですか?オリジナルJSONの
フォーマット(yelp_academic_dataset_business.json):
with open('yelp_academic_dataset_business.json') as f:
#Normalize the json data to flatten it and store output in a dataframe
frame= json_normalize([json.loads(line) for line in f])
#write the dataframe to a csv file
frame.to_csv('yelp_academic_dataset_business.csv', encoding='utf-8', index=False)
私は現在、何をしようとしている:
with open(json_filename) as f:
data = f.readlines()
# remove the trailing "\n" from each line
data = map(lambda x: x.rstrip(), data)
data_json_str = "[" + ','.join(data) + "]"
df = read_json(data_json_str)
#Now Looking to expand df['attributes'] and others here
そして私をjson_normalizeと
{
"business_id":"encrypted business id",
"name":"business name",
"neighborhood":"hood name",
"address":"full address",
"city":"city",
"state":"state -- if applicable --",
"postal code":"postal code",
"latitude":latitude,
"longitude":longitude,
"stars":star rating, rounded to half-stars,
"review_count":number of reviews,
"is_open":0/1 (closed/open),
"attributes":["an array of strings: each array element is an attribute"],
"categories":["an array of strings of business categories"],
"hours":["an array of strings of business hours"],
"type": "business"
}
マイinitalの試み私の目的はそれを.csvに変換してデータベースにロードすることです。私は自分のデータベースの列にリストを必要としません。
あなたはYelpのデータセットチャレンジサイトから、元のJSONデータを取得することができます。 https://www.yelp.ca/dataset_challenge/dataset
オリジナルのjsonとあなたの試行を確認できますか? – Parfait
jsonのフォーマットを追加しました。データへのリンクと自分の試みです。 – Koryx