簡體   English   中英

優化從數據框中提取列表以在 Python 中創建新變量

[英]Optimize extracting list from dataframe to create new variable in Python

我對 Python 非常陌生。 我有一個巨大的數據框,其中包含兩個列表格式的變量。 它的尺寸為 1416631 x 2。

我試圖提取列表的第一個元素來創建另一個變量。 然而,目前的代碼已經運行了一個多小時無濟於事。

這是帶有兩個變量colPMID (當前為空)的數據幀MH的片段:

col                             PMID
[1, Aged, Adult, Child]
[53, Humans, Kidney Injury]
[22, Diagnostic Imaging, Aged]

這就是我想要的樣子(2 個變量: PMIDcol ):

col                             PMID
[Aged, Adult, Child]            1
[Humans, Kidney Injury]         53
[Diagnostic Imaging, Aged]      22

這是我的代碼:

# extract PMID
for index, row in MH.iterrows():
    MH["PMID"][index] = MH["col"][index][0]

此代碼適用於較小的數據幀,但不會停止在較大的數據幀上運行。

請指教。 謝謝

這是一種方法:

import pandas as pd

df = pd.DataFrame({'col': [[1, 'Aged', 'Adult', 'Child'],
                           [53, 'Humans', 'Kidney Injury'],
                           [22, 'Diagnostic Imaging', 'Aged']]})

df['PMID'], df['col'] = list(zip(*df['col'].apply(lambda x: (x[:1][0], x[1:])).values))

#                           col  PMID
# 0        [Aged, Adult, Child]     1
# 1     [Humans, Kidney Injury]    53
# 2  [Diagnostic Imaging, Aged]    22

解釋

  • pd.Series.apply允許您應用任何函數,包括系列上的匿名lambda函數。
  • 元組(x[:1][0], x[1:])將您的列表列拆分為您指定的格式。
  • zip(*x.values)將元組數組解包為 2 列的數組,這些列被分配給“PMID”和“col”列。

暫無
暫無

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

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