領導給了一堆無序雜亂的數據,我寫了個Python自動化腳本
這個問題算是群友答疑。如果說同事或者老板給你一堆這樣的數據,你估計會抓狂,該怎么處理呢?

仔細觀察上面數據可以發現,該數據有如下2個主要特點:
- 每一行的數據長度不同。第一行和第三行有4個屬性,第二行有5個屬性。
- 不同行的屬性值,并不是對應排列。
解題思路剖析
你可能會想,直接用Excel分裂。其實并不可行,因為不同行的屬性值,并不是對應排列。Excel分列導致的結果就是:不同的屬性,存在于相同的行。
放棄Excel那條路之后,我就只能尋求Python的幫助了。我們要根據數據的特點,選擇合適的數據存儲方法。最終問題就轉化為:構造數據源,然后創建DataFrame即可。
然后根據我們這個數據的特點,我選擇構造字典組成的列表這樣一個數據,并利用它來創建DataFrame。

觀察我提供的這個案例和待解決的問題,簡直異曲同工。我們同樣可以將上述數據的每一行,都變成一個個鍵值對組成的字典。然后最外層用一個大列表,將所有的字典包含起來。
完整代碼
1)首先需要構造練習數據
- import pandas as pd
- x = {"信息":["年齡:12;性別:女;身高:22;愛好:打球",
- "年齡:12;說明:歷史數據;性別:女;身高:22;愛好:打球",
- "生日:2月3日;年齡:12;性別:女;愛好:打球"]
- }
- df = pd.DataFrame(x)
- df
結果如下:

2)構造字典組成的列表
- tmps_list = []
- for data in df["信息"].values:
- tmp_dict = {}
- for kv in data.split(";"):
- k, v = kv.split(":")
- tmp_dict[k] = v
- tmps_list.append(tmp_dict)
- tmps
結果如下:

3)創建DataFrame
- df = pd.DataFrame(tmps)
- df
結果如下:
