我需要抓取數百個頁面,而不是存盤每個頁面的整個 json,我只想將每個頁面的幾列存盤到 Pandas 資料框中。但是,在開始時資料框為空時,我遇到了問題。我需要填充一個沒有任何列或行的空資料框。所以下面的回圈不能正常作業:
import pandas as pd
import requests
cids = [4100,4101,4102,4103,4104]
df = pd.DataFrame()
for i in cids:
url_info = requests.get(f'myurl/{i}/profile')
jdata = url_info.json()
df['Customer_id'] = i
df['Name'] = jdata['user']['profile']['Name']
...
在這種情況下,我該怎么辦?
uj5u.com熱心網友回復:
您可以通過使用enumerate()和來解決這個問題loc:
for index, i in enumerate(cids):
url_info = requests.get(f'myurl/{i}/profile')
jdata = url_info.json()
df.loc[index, 'Customer_id'] = i
df.loc[index, 'Name'] = jdata['user']['profile']['Name']
uj5u.com熱心網友回復:
如果您在創建空資料框時指定列名,如下所示:
df = pd.DataFrame(columns = ['Customer_id', 'Name'])
然后您可以使用以下方法附加新資料:(
df = df.append({'Customer_id' : i, 'Name' : jdata['user']['profile']['Name']}, ignore_index=True)
加上您填充的任何其他列)然后您可以為您的每次迭代向資料框添加一行環形。
import pandas as pd
import requests
cids = [4100,4101,4102,4103,4104]
df = pd.DataFrame(columns = ['Customer_id', 'Name'])
for i in cids:
url_info = requests.get(f'myurl/{i}/profile')
jdata = url_info.json()
df = df.append({'Customer_id' : i, 'Name' : jdata['user']['profile']['Name']}, ignore_index=True)
應該注意的是,在回圈中對 DataFrame 使用 append 通常效率低下(參見此處),因此更好的方法是將結果保存為串列串列 (df_data),然后將其轉換為 DataFrame,如下所示:
cids = [4100,4101,4102,4103,4104]
df_data = []
for i in cids:
url_info = requests.get(f'myurl/{i}/profile')
jdata = url_info.json()
df_data.append([i, jdata['user']['profile']['Name']])
df = pd.DataFrame(df_data, columns = ['Customer_id', 'Name'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/339732.html
上一篇:在SuiteScript中發送帶有正確回復的案例回復電子郵件
下一篇:根據字串中定義的條件填充新列
