簡體   English   中英

取消嵌套 pandas dataframe 的有效方法

[英]Efficient way to unnest pandas dataframe

我正在訪問相當多的 json 文件系列,並將它們存儲在 pandas 系列中,這是較大 dataframe 的一部分。 在說json中有幾個字段我想要,其中一些是嵌套的。 我一直在使用 json_normalize 提取它們。 然后將這些新字段與我原來的 dataframe 合並的目標。

我的問題是,當我這樣做時,我沒有得到一個具有 J 行和 K 列的 dataframe,而是得到一個 J 長度系列,每個元素都是 1xK dataframe。 我想知道是否有一種有效的矢量化方法可以將此嵌套系列/數據幀轉換為常規 dataframe 或從一開始就獲得常規 dataframe。

我使用 map/lambda 來創建我的嵌套系列。 現在我正在使用 iteritems/append 取消嵌套,但必須有一種更有效的方法。

url_base = 'http:\\foo.bar='
df['http'] = df['id'].map(lambda x: url_base + x)
df['json'] = df['http'].map(lambda x: nf.get_json(x))
nest_ser = df['json'].map(lambda x: json_normalize(x))
df = pd.DataFrame()
for index, item in nest_ser.iteritems():
   df = df.append(item)

json_normalize 產生:

pd.Series([pd.DataFrame([col1,col2...]),[pd.DataFrame([col1,col2...]),[pd.DataFrame([col1,col2...]))

代替

pd.DataFrame([col1,col2...])

假設您在 json_normalize 中的 output 系列名稱為 sr:

pd.concat(sr.tolist())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM