我的資料庫有一列,其中所有單元格都有一串資料。大約有 15-20 個變數,其中資訊用“=”分配給變數,并用空格分隔。變數的數量和名稱在各個單元格中可能不同......我面臨的問題是資料用空格分隔,一些變數也是如此。變數名稱在每個單元格中,所以我不能只制作標題并將值添加到資料框中,就像 csv 一樣。該解決方案還需要能夠為資料庫中的所有新資料自動執行此程序。
例子:
單元格 1:TITLE="Brothers Karamazov" AUTHOR="Fyodor Dostoevsky" PAGES="520"... RELEASED="1880"。
單元格 2:TITLE="Moby Dick" AUTHOR="Herman Melville" PAGES="655"... 主要字符="Ishmael"。
我想將這些資料字串轉換為結構化的資料框。
| 標題 | 作者 | 頁數 | 發布 | 主要的 |
|---|---|---|---|---|
| 卡拉馬佐夫兄弟 | 陀思妥耶夫斯基 | 520 | 1880 | 鈉 |
| 白鯨記 | 赫爾曼·梅維爾 | 655 | 鈉 | 以實瑪利 |
關于如何前進的任何提示?在將其轉換為資料框之前,我曾使用 replace() 函式將其轉換為 JSON 格式,但尚未成功。非常感謝任何提示或想法。
謝謝,
uj5u.com熱心網友回復:
我想這個樣本是你需要的。
import pandas as pd
# Helper function
def str_to_dict(cell) -> dict:
normalized_cell = cell.replace('" ', '\n').replace('"', '').split('\n')
temp = {}
for x in normalized_cell:
key, value = x.split('=')
temp[key] = value
return temp
list_of_cell = [
'TITLE="Brothers Karamazov" AUTHOR="Fyodor Dostoevsky" PAGES="520" RELEASED="1880"',
'TITLE="Moby Dick" AUTHOR="Herman Melville" PAGES="655" MAIN CHARACTER="Ishmael"'
]
dataset = [str_to_dict(i) for i in list_of_cell]
print(dataset)
"""
[{'TITLE': 'Brothers Karamazov', 'AUTHOR': 'Fyodor Dostoevsky', 'PAGES': '520', 'RELEASED': '1880'}, {'TITLE': 'Moby Dick', 'AUTHOR': 'Herman Melville', 'PAGES': '655', 'MAIN CHARACTER': 'Ishmael'}]
"""
df = pd.DataFrame(dataset)
df.head()
"""
TITLE AUTHOR PAGES RELEASED MAIN CHARACTER
0 Brothers Karamazov Fyodor Dostoevsky 520 1880 NaN
1 Moby Dick Herman Melville 655 NaN Ishmael
"""
uj5u.com熱心網友回復:
Pandas lib 可以從 .csv 檔案中讀取它們并制作資料框 - 試試這個:
import pandas as pd
file = 'xx.csv'
data = pd.read_csv(file)
print(data)
uj5u.com熱心網友回復:
- 從您的資料庫行創建 Python字典。
- 然后使用函式創建 Pandas 資料框:pandas.DataFrame.from_dict
像這樣的東西:
import pandas as pd
# Assumed data from DB, structure it like this
data = [
{
'TITLE': 'Brothers Karamazov',
'AUTHOR': 'Fyodor Dostoevsky'
}, {
'TITLE': 'Moby Dick',
'AUTHOR': 'Herman Melville'
}
]
# Dataframe as per your requirements
dt = pd.DataFrame.from_dict(data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/493409.html
