簡體   English   中英

試圖使 pandas python 代碼更短

[英]Trying to make pandas python code shorter

我對 python 和 pandas 相當陌生。 這段代碼完全符合我的要求

dfmcomp=dfm.loc[dfm[ProgSel]=='C']
dfmcomp=dfmcomp[~dfmcomp.Code.isin(dfc.CourseCode)]
print(dfmcomp[['Code','Description']])

但我覺得我應該能夠在一行而不是三行中完成此操作,並且無需創建額外的 dataframe (dfmcomp)。 我正在嘗試學習如何創建更好/更整潔的代碼

我嘗試將其縮短為兩行,方法是將第二行中的 dfmcomp 替換為創建 dfmcomp 的代碼。 我希望從那里我可以完全消除 dfmcomp 並打印切片的 dfm,但它沒有用:

dfmcomp=dfm[~dfm.loc[dfm[ProgSel]=='C'].Code.isin(dfc.CourseCode)]
print(dfmcomp[['Code','Description']])

我收到了這個錯誤

IndexingError: Unalignable boolean 系列作為分度器提供(boolean 系列的索引和索引的 object 的索引不匹配)。

我被困在下一個 go 的位置。 任何人都可以幫忙嗎? 這可以做得更好嗎?

我認為你應該能夠做到這一點?

print(dfm.loc[dfm[ProgSel].eq('C') & ~dfc.Code.isin(dfc.CourseCode), ['Code','Description']]
    dfmcomp = dfm[(dfm.ProgSel == 'C') & (~dfm.Code.isin(dfc.CourseCode))][['Code', 'Description']]

    print(dfmcomp)

將條件分離到掩碼中可能會有所幫助:

mask = (dfm[ProgSel]=='C') & (~dfm.Code.isin(dfc.CourseCode))
print(dfm.loc[mask, ['Code','Description']])

暫無
暫無

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

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