我对 python 和 pandas 相当陌生。这段代码完全符合我的要求
dfmcomp=dfm.loc[dfm[ProgSel]=='C']
dfmcomp=dfmcomp[~dfmcomp.Code.isin(dfc.CourseCode)]
print(dfmcomp[['Code','Description']])
但我觉得我应该能够用一行而不是三行来完成此操作,并且无需创建额外的数据帧(dfmcomp)。我正在尝试学习如何创建更好/更整洁的代码
我尝试将第二行中的 dfmcomp 替换为创建 dfmcomp 的代码,将其缩短为两行。我希望从那里我可以完全消除 dfmcomp 并只打印切片 dfm,但它不起作用:
dfmcomp=dfm[~dfm.loc[dfm[ProgSel]=='C'].Code.isin(dfc.CourseCode)]
print(dfmcomp[['Code','Description']])
我收到这个错误
IndexingError: Unalignable boolean Series provided as indexer (index of the boolean Series and of the indexed object do not match).
我不知道下一步该去哪里。有人可以帮忙吗?这可以做得更好吗?
最佳答案
我认为你应该能够做到这一点?
print(dfm.loc[dfm[ProgSel].eq('C') & ~dfc.Code.isin(dfc.CourseCode), ['Code','Description']]
关于python - 尝试让 pandas python 代码更短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70443139/