जब पंडों का डेटाफ़्रेम इस तरह से हो:
import pandas as pd
import numpy as np
df = pd.DataFrame({'today': [['a', 'b', 'c'], ['a', 'b'], ['b']],
'yesterday': [['a', 'b'], ['a'], ['a']]})
today yesterday
0 ['a', 'b', 'c'] ['a', 'b']
1 ['a', 'b'] ['a']
2 ['b'] ['a']
... etc
लेकिन लगभग 100 000 प्रविष्टियों के साथ, मैं एक पंक्ति-वार आधार पर दो स्तंभों में उन सूचियों के परिवर्धन और निष्कासन को ढूंढ रहा हूं।
यह इस प्रश्न से तुलना करने योग्य है: पंडों: डेटा में एक पंक्ति में बुद्धिमान सूची के कॉलम की तुलना पंडों (पाश के लिए नहीं) के साथ कैसे करें? लेकिन मैं मतभेदों को देख रहा हूं, और Pandas.applyऐसा लगता है कि ऐसी कई प्रविष्टियों के लिए विधि इतनी जल्दी नहीं है। यह वह कोड है जो मैं वर्तमान में उपयोग कर रहा हूं। विधि के Pandas.applyसाथ numpy's setdiff1d:
additions = df.apply(lambda row: np.setdiff1d(row.today, row.yesterday), axis=1)
removals = df.apply(lambda row: np.setdiff1d(row.yesterday, row.today), axis=1)
यह ठीक काम करता है, हालांकि इसमें 120 000 प्रविष्टियों के लिए एक मिनट लगता है। तो क्या इसे पूरा करने का एक तेज़ तरीका है?