怎麼把DICTIONARY轉成DATAFRAME?
【DAY12的DICTIONARY長這樣】:
res = {}
for d in soup.find(class_="part_list_2").find_all('h3'):
date = d.find(class_="date").text
title = d.find_all('a')[-1].text.replace('\u3000','')
tag = d.find(class_='tag').text # tag = d.select('.tag')[0].text # other way, CSS Selector
res.setdefault(tag, []) # if the tag in this run is not exist, create a key & a value with list
res[tag].append({
'title': title,
'date': date
})
------------------------------------------
約莫是 {'tag'1:[{title1, date1}, {title2, day2}]} 這樣的字典
我想把他變成像下面這樣的dataframe,請問該怎麼寫程式碼?
有嘗試在網路上找方法,但好像一直找不到合適的答案
相關想到的詞大概是
1. DICTIONARY TO DATARAME
2. REPEAT KEY IN DATAFRAME
回答列表
-
2020/04/12 上午 02:32張維元 (WeiYuan)贊同數:1不贊同數:0留言數:1
嗨,要產出你想要的 DataFrame 應該是這樣:
```
import pandas as pd
pd.DataFrame([{
'tag': 'tag1',
'title': 'title1',
'date': 'date1'
}, {
'tag': 'tag',
'title': 'title2',
'date': 'day2'
}
])
```
所以這個其實不是轉 DataFrame 的問題,而是要轉什麼資料的問題。所以我們要看看如何把
{'tag':[{'title1', 'date1'}, {'title2', 'day2'}]
變成:
[{
'tag': 'tag1',
'title': 'title1',
'date': 'date1'
}, {
'tag': 'tag',
'title': 'title2',
'date': 'day2'
}
]
這個其實就是一個程式的邏輯問題,你可以先想想看:)
如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃
-
2020/04/12 下午 08:07葉贊同數:0不贊同數:0留言數:4
【追問】
嘗試寫了,原來是要重組結構。
但是有一點差錯
我知道這個問題只要要把d={} 移到迴圈最內層就可以解決
但是在迴圈裡明明印出來沒問題,最後的結果卻只存了每個tag的最後一個{}
不知道是為什麼?
-
2020/04/18 上午 00:52張維元 (WeiYuan)贊同數:0不贊同數:0留言數:0
嗨,
「我知道這個問題只要要把d={} 移到迴圈最內層就可以解決」
=> 原因是在 Python 這裡的 dict 是 call-by-reference,簡單來說就是這裡定義的 d 是共用的,所以你後面改變的時候,之前的 d 也會跟著被改變。
如果這個回答對你有幫助請主動點選「有幫助」的按鈕,也可以追蹤我的GITHUB帳號。若還有問題的話,也歡迎繼續再追問或者把你理解的部分整理上來,我都會提供你 Review 和 Feedback 😃😃😃