将熊猫的DatetimeIndex与条件较小的DatetimeIndex进行比较

时间:2018-07-20 17:31:47

标签: python pandas numpy datetime

我正在尝试比较两个具有不同长度的Pandas DatetineIndexs。我只想在我的较大的Dataframe(df)中添加一个新列,然后在与较小的DatetineIndex(事件)匹配的地方放置1。

我尝试了

df['filter'] = np.where(df.index == tEvents, 1, np.nan)

但是我收到“ ValueError:长度必须匹配才能进行比较”

我被困在这里的时间比我承认的时间长

Comparing different python datetime index with different lengths

1 个答案:

答案 0 :(得分:2)

df.indexdf.index == tEvents的长度不同。 df.index看起来要比较两个列表。

您要检查tEvents中的元素是否在df.index == tEvents中。因此,将df.index.isin(tEvents)替换为// Runs the txnFunc and retries if TransientTransactionError encountered function runTransactionWithRetry(txnFunc, session) { while (true) { try { txnFunc(session); // performs transaction break; } catch (error) { // If transient error, retry the whole transaction if ( error.hasOwnProperty("errorLabels") && error.errorLabels.includes("TransientTransactionError") ) { print("TransientTransactionError, retrying transaction ..."); continue; } else { throw error; } } } } // Retries commit if UnknownTransactionCommitResult encountered function commitWithRetry(session) { while (true) { try { session.commitTransaction(); // Uses write concern set at transaction start. print("Transaction committed."); break; } catch (error) { // Can retry commit if (error.hasOwnProperty("errorLabels") && error.errorLabels.includes("UnknownTransactionCommitResult") ) { print("UnknownTransactionCommitResult, retrying commit operation ..."); continue; } else { print("Error during commit ..."); throw error; } } } } // Updates two collections in a transactions function updateEmployeeInfo(session) { employeesCollection = session.getDatabase("hr").employees; eventsCollection = session.getDatabase("reporting").events; session.startTransaction( { readConcern: { level: "snapshot" }, writeConcern: { w: "majority" } } ); try{ employeesCollection.updateOne( { employee: 3 }, { $set: { status: "Inactive" } } ); eventsCollection.insertOne( { employee: 3, status: { new: "Inactive", old: "Active" } } ); } catch (error) { print("Caught exception during transaction, aborting."); session.abortTransaction(); throw error; } commitWithRetry(session); } // Start a session. session = db.getMongo().startSession( { mode: "primary" } ); try{ runTransactionWithRetry(updateEmployeeInfo, session); } catch (error) { // Do something with error } finally { session.endSession(); }

要查看如果日期匹配则添加True或false值,请使用DataFrame.isin()