我對這一切都很陌生,前段時間我參加了一個簡短的 Python 訓練營,現在正在努力將一些 Instagram 資料轉換為我理解的格式。
使用以下代碼:
# Importing packages
import json
import re
import collections
import pandas as pd
import datetime as dt
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
# Loading downloaded instagram data
json_data = {}
data_path = "C:/Users/etc.json"
with open(data_path) as file:
json_data = json.load(file)
print(json_data)
我得到以下看起來很有希望的輸出:
{'relationships_followers': [{'title': '', 'media_list_data': [], 'string_list_data': [{'href': 'https://www.instagram.com/username1', 'value': 'username1', 'timestamp': 1655411505}]}, {'title': '', 'media_list_data': [], 'string_list_data': [{'href': 'https://www.instagram.com/username2', 'value': 'username2', 'timestamp': 1655149264}]}, {'title': '', 'media_list_data': [], 'string_list_data': [{'href': 'https://www.instagram.com/username3', 'value': 'username3', 'timestamp': 1655129904}]}, etc.....
型別 = 字典
但是當我嘗試將其轉換為熊貓資料框時,它會奇怪地呈現
dfp = pd.read_json(data_path, orient = 'records')
print(dfp)
print(type(dfp))
輸出:
relationships_followers
0 {'title': '', 'media_list_data': [], 'string_l...
1 {'title': '', 'media_list_data': [], 'string_l...
2 {'title': '', 'media_list_data': [], 'string_l...
3 {'title': '', 'media_list_data': [], 'string_l...
4 {'title': '', 'media_list_data': [], 'string_l...
.. ...
575 {'title': '', 'media_list_data': [], 'string_l...
576 {'title': '', 'media_list_data': [], 'string_l...
577 {'title': '', 'media_list_data': [], 'string_l...
578 {'title': '', 'media_list_data': [], 'string_l...
579 {'title': '', 'media_list_data': [], 'string_l...
[580 rows x 1 columns]
<class 'pandas.core.frame.DataFrame'>
如何停止將“relationships_followers”作為一個孤獨的專欄?
試圖獲得如下輸出:
href value timestamp
0 www.inst... username1 DDMMYY
1 www.inst... username2 DDMMYY
2 www.inst... username3 DDMMYY
3 www.inst... username4 DDMMYY
...
578 www.inst... username578 DDMMYY
579 www.inst... username579 DDMMYY
uj5u.com熱心網友回復:
嘗試對您的主命令執行此操作。
worthy_data = json_data.get('relationship_followers')
wanted_dicts = [k:v for (k,v) in worthy_data.items() if k == 'string_list_data']
pd.DataFrame(wanted_dicts)
uj5u.com熱心網友回復:
在這種情況下,您可以使用pd.json_normalize()從字典中提取href, value,timestamp列。string_list_data
pd.json_normalize(json_data['relationships_followers'], 'string_list_data')
# Output :
# href value timestamp
# 0 https://www.instagram.com/username1 username1 1655411505
# 1 https://www.instagram.com/username2 username2 1655149264
# 2 https://www.instagram.com/username3 username3 1655129904
uj5u.com熱心網友回復:
中的值為relationships_followersa list。您dict在此串列中有一個,并且您希望將資料放入string_list_data
假設您dicts在listin 中有多個relationships_followers并且您想要全部獲取它們,那么應該這樣做:
import pandas as pd
df = pd.DataFrame()
for i in data['relationships_followers']:
new_df = pd.DataFrame(data['relationships_followers'][i]
['string_list_data'])
df = pd.concat(df, new_df)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/494873.html
標籤:Python json 熊猫 数据框 Instagram
上一篇:在R中的值更改之前洗掉某個值的行
