我想在現有數據框中創建一個新列,它基於評估值是否存在於兩列中。熊貓多列評估生成新列
假定以下是一箇中型數據集的一部分(30萬個數據點):
DATE |ID |3_DAY_FUTURE
2016-12-14|Bob123|2016-12-17
2016-12-15|Bob123|2016-12-18
2016-12-16|Bob123|2016-12-19
2016-12-17|Bob123|2016-12-20
2016-12-18|Bob123|2016-12-21
2016-12-19|Bob123|2016-12-22
2016-12-20|Bob123|2016-12-23
2017-01-14|Jim123|2017-01-17
2017-01-15|Jim123|2017-01-18
2017-01-16|Jim123|2017-01-19
2017-01-17|Jim123|2017-01-20
2017-01-18|Jim123|2017-01-21
2017-01-19|Jim123|2017-01-22
2017-01-20|Jim123|2017-01-23
我期待創建評估每個ID(Bob和吉姆在這個例子中)是否具有柱日期值與未來3天相匹配。例如,Bob123在2016-12-14和2016-12-17出席,因爲這兩個DATE都與他有關。第一行將添加一個新的列,說是或類似的東西。這裏是我希望用一個新3_DAY_STATUS列輸出的一個例子:
DATE |ID |3_DAY_FUTURE|3_DAY_STATUS
2016-12-14|Bob123|2016-12-17|YES
2016-12-15|Bob123|2016-12-18|YES
2016-12-16|Bob123|2016-12-19|YES
2016-12-17|Bob123|2016-12-20|YES
2016-12-18|Bob123|2016-12-21|NO
2016-12-19|Bob123|2016-12-22|No
2016-12-20|Bob123|2016-12-23|NO
2017-01-14|Jim123|2017-01-17|YES
2017-01-15|Jim123|2017-01-18|YES
2017-01-16|Jim123|2017-01-19|YES
2017-01-17|Jim123|2017-01-20|YES
2017-01-18|Jim123|2017-01-21|NO
2017-01-19|Jim123|2017-01-22|NO
2017-01-20|Jim123|2017-01-23|NO
任何建議都非常讚賞。
謝謝@jezrael。在較小的數據集上工作得很好,但由於只能在一個處理器上工作,因此確實需要花費數小時才能完成整個數據集。這條線特別是:mask = df.groupby('ID')。apply(lambda x:x ['3_DAY_FUTURE']。isin(df.DATE))。值 – echoecho256
是的,它的性能有點問題。第二個答案呢? – jezrael
第二個答案似乎沒有考慮到按ID分割或分組。似乎只是尋找一個偏移量,無論ID是否仍然相同 – echoecho256