簡體   English   中英

python:在 FOR 循環中獲得的多列 pandas 數據文件

[英]python: multi-column pandas data-file obtained in FOR loop

我正在研究一個 Python 腳本,該腳本循環 N.SDF 填充,使用 glob 創建它們的列表,為每個文件執行一些計算,然后以 pandas 數據文件格式存儲此信息。 假設我計算每個文件的 4 個不同屬性,對於 1000 個填充,預期的 output 應該以 5 列和 1000 行的數據文件格式匯總。 以下是代碼示例:

  # make a list of all .sdf filles present in data folder:
dirlist = [os.path.basename(p) for p in glob.glob('data' + '/*.sdf')]

# create empty data file with 5 columns:
# name of the file,  value of variable p, value of ac, value of don, value of wt
df = pd.DataFrame(columns=["key", "p", "ac", "don", "wt"])

# for each sdf file get its name and calculate 4 different properties: p, ac, don, wt
for sdf in dirlist:
        sdf_name=sdf.rsplit( ".", 1 )[ 0 ]
        # set a name of the file
        key = f'{sdf_name}'
        mol = open(sdf,'rb')
        # --- do some specific calculations --
        p = MolLogP(mol) # coeff conc-perm
        ac = CalcNumLipinskiHBA(mol)#
        don = CalcNumLipinskiHBD(mol)
        wt = MolWt(mol)
        # add one line to DF in the following order : ["key", "p", "ac", "don", "wt"]
        df[key] = [p, ac, don, wt]

問題出在腳本的最后一行,需要將所有計算匯總在一行中,並將 append 與處理后的文件一起放入 DF。 最終,對於 1000 個已處理的 SDF 填充,我的 DF 應該包含 5 列和 1000 行。

你應該用類似的東西替換麻煩的線

df.loc[len(df)] = [key, p, ac, don, wt]

這將 append df末尾的新行

或者你可以做

df = df.append(adict,ignore_index = True)

其中adict是與作為鍵的列名關聯的值的字典:

adict = {'key':key, 'p':p, ...}

暫無
暫無

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

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