我对蟒蛇和熊猫很陌生。这段代码完全符合我的要求。
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:作为索引器提供的不可对齐布尔序列(布尔序列和索引对象的索引不匹配)。
我被困在了下一个地方。有人能帮忙吗?还能做得更好吗?
发布于 2021-12-21 16:50:24
我觉得你应该能做到吗?
print(dfm.loc[dfm[ProgSel].eq('C') & ~dfc.Code.isin(dfc.CourseCode), ['Code','Description']]
发布于 2021-12-21 21:52:07
将情况分解为掩码可能会有帮助:
mask = (dfm[ProgSel]=='C') & (~dfm.Code.isin(dfc.CourseCode))
print(dfm.loc[mask, ['Code','Description']])
发布于 2021-12-21 17:43:06
dfmcomp = dfm[(dfm.ProgSel == 'C') & (~dfm.Code.isin(dfc.CourseCode))][['Code', 'Description']]
print(dfmcomp)
https://stackoverflow.com/questions/70443139
复制