從 excel 提取 json 并 轉(zhuǎn)為 Dataframe 保存為 excel

image.png

我們 在處理 dataframe 時橘霎,有時候一個字段 的value 其實(shí)就是含有json 字段值的內(nèi)容识埋,如何把它 提取出來 解析出 按列 顯示分割的 Excel 文件

其實(shí)思路就很簡單 荠卷,我首先 讀取到這個文件弦叶,然后定位到這一列,然后提取這一列闪彼,提取好這一列后婿滓,讀取 老速,然后如果格式固定的話,使用 indexof 定位到 json字符串空幻,如果格式不太固定烁峭,使用charAt 定位到j(luò)son 字符串,假如再復(fù)雜一些 則可以使用regex秕铛,
當(dāng)json 字符串 拿到后约郁,再把 json 字符串 轉(zhuǎn)為json 對象,并保存到 json 文件中
按行分割
但两,然后再使用 pandas 讀取 這個json 文件鬓梅,讀取時 pandas自己會轉(zhuǎn)化為dataframe的格式,如果 需要添加 類似索引列谨湘,再在dataframe上 insert 新的索引列绽快,然后 在把 讀取的dataframe芥丧,保存為 pickle 或者 csv 或者 excel格式
,加載 或者打開文件坊罢,驗證文件 正確后 完成


import  pandas as pd
import  numpy  as  np
import  json


file_path=""

rawData=pd.read_excel("/Users/geo/Documents/集智指數(shù)101000-測試.xlsx",sheetname="工作表1")
midVariable=rawData["中間變量"]
midVariable.head()

listvar=list(midVariable)
len(listvar)

for  va in listvar:
    stva=str(va).strip()
    jsVa=stva[13:-3]

with open("/Users/geo/Documents/jiaoData/record.json", "w") as f:
  for va in listvar:
    stva = str(va).strip()
    jsVa = stva[13:-3]
    dictjs = json.loads(jsVa)
    json.dump(dictjs, f)
    f.write('\n')
 # 讀取最后一行 多一個 換行符续担,使用json 拼接換行寫入到文件中
  print("加載入文件完成...")
# pandas 讀取json  文件 一定要有 lines=True ,否則讀取失敗  Trailing Data
jsdata=pd.read_json("/Users/geo/Documents/jiaoData/record.json", lines=True)
jsdata.to_pickle("/Users/geo/Documents/jiaoData/record.pkl")
pkls=pd.read_pickle("/Users/geo/Documents/jiaoData/record.pkl")
exel=jsdata.to_excel("/Users/geo/Documents/jiaoData/record.xlsx")
pkls.shape


gidcols=rawData["gid"]
#可以指定插入列的位置 和值 活孩,是否 保存 重復(fù)值
pkls.insert(0,"gid",gidcols, allow_duplicates=False)
pkls.to_excel("/Users/geo/Documents/jiaoData/recordGids.xlsx")

寫成 class方法

import  pandas as pd
import  numpy  as  np
import  json



class Perceptron(object):

  def __init__(self):
    self.filePath = "/Users/geo/Documents/集智指數(shù)101000-測試.xlsx"
    self.sheetNamez = "工作表1"
    self.jsonfilePath = "/Users/geo/Documents/jiaoData/record.json"

  @classmethod
  def readExcelGetJsonStrList(self,filePath,sheetNamez):
    rawData=pd.read_excel(filePath,sheetname=sheetNamez)
    midVariable=rawData["中間變量"]
    midVariable.head()
    listvar=list(midVariable)
    len(listvar)
    return listvar

  @classmethod
  def readRawJsonStrListWriteJsonFile(self,listvar):
     with open("/Users/geo/Documents/jiaoData/record.json", "w") as f:
         for va in listvar:
            stva = str(va).strip()
            jsVa = stva[13:-3]
            dictjs = json.loads(jsVa)
            json.dump(dictjs, f)
            f.write('\n')
     print("加載入文件完成...")

  @classmethod
  def  readJsonFileCovertToDataframeEndExcel(self,srcExcelPath,jsonfilePath,sheetNamez):
       rawDatas = pd.read_excel(srcExcelPath, sheet_name=sheetNamez)
       gidcols = rawDatas["gid"]
       jsdata=pd.read_json(jsonfilePath, lines=True)
       jsdata.to_pickle("/Users/geo/Documents/jiaoData/record.pkl")
       pkls=pd.read_pickle("/Users/geo/Documents/jiaoData/record.pkl")
       pkls.insert(0, "gid", gidcols, allow_duplicates=False)
       exel=jsdata.to_excel("/Users/geo/Documents/jiaoData/record.xlsx")
       pkls.shape
       pkls.to_excel("/Users/geo/Documents/jiaoData/recordGids.xlsx")

#注意 class 定義要在調(diào)用前聲明 
if __name__ == '__main__':
  rjx = Perceptron()
  print("begin convert raw json to  excel")
  rawjsonStr = rjx.readExcelGetJsonStrList(rjx.filePath, rjx.sheetNamez)
  rjx.readRawJsonStrListWriteJsonFile(rawjsonStr)
  rjx.readJsonFileCovertToDataframeEndExcel(rjx.filePath, rjx.jsonfilePath, rjx.sheetNamez)



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末物遇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子憾儒,更是在濱河造成了極大的恐慌询兴,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件起趾,死亡現(xiàn)場離奇詭異诗舰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)训裆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門眶根,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人边琉,你說我怎么就攤上這事汛闸。” “怎么了艺骂?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長隆夯。 經(jīng)常有香客問我钳恕,道長,這世上最難降的妖魔是什么蹄衷? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任忧额,我火速辦了婚禮,結(jié)果婚禮上愧口,老公的妹妹穿的比我還像新娘睦番。我一直安慰自己,他們只是感情好耍属,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布托嚣。 她就那樣靜靜地躺著,像睡著了一般厚骗。 火紅的嫁衣襯著肌膚如雪示启。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天领舰,我揣著相機(jī)與錄音夫嗓,去河邊找鬼迟螺。 笑死,一個胖子當(dāng)著我的面吹牛舍咖,可吹牛的內(nèi)容都是我干的矩父。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼排霉,長吁一口氣:“原來是場噩夢啊……” “哼窍株!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起郑诺,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤夹姥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后辙诞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辙售,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年飞涂,在試婚紗的時候發(fā)現(xiàn)自己被綠了旦部。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡较店,死狀恐怖士八,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情梁呈,我是刑警寧澤婚度,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站官卡,受9級特大地震影響蝗茁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寻咒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一哮翘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毛秘,春花似錦饭寺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抹恳,卻和暖如春旬薯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背适秩。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工绊序, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留硕舆,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓骤公,卻偏偏與公主長得像抚官,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子阶捆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容