[英]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.