मैं विशिष्ट कॉलम (कुंजी 1, की 2) पर दो डेटाफ्रेम मर्ज करना चाहता हूं और अन्य कॉलम (मान) के मानों को जोड़ना चाहता हूं।पांडस में 2 डेटाफ्रेम मर्ज करें: कुछ कॉलम पर शामिल हों, अन्य को
key1 key2 value
0 0 0 0
1 1 1 1
2 2 2 12
3 3 3 14
4 4 4 12
5 5 5 13
एसक्यूएल संदर्भ में, मैं चाहता हूँ:
दृष्टिकोण 1
concatenated = pd.concat([df1, df2])
grouped = concatenated.groupby(['key1', 'key2'], as_index=False)
summed = grouped.agg(np.sum)
result = summed[['key1', 'key2', 'value']]
:
SELECT df1.key1, df1.key2, df1.value + df2.value AS value
FROM df1 OUTER JOIN df2 ON key1, key2
मैं दो दृष्टिकोण की कोशिश की
>>> df1 = pd.DataFrame({'key1': range(4), 'key2': range(4), 'value': range(4)})
key1 key2 value
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
>>> df2 = pd.DataFrame({'key1': range(2, 6), 'key2': range(2, 6), 'noise': range(2, 6), 'value': range(10, 14)})
key1 key2 noise value
0 2 2 2 10
1 3 3 3 11
2 4 4 4 12
3 5 5 5 13
मैं इस परिणाम चाहते हैं 63,210
दृष्टिकोण 2
joined = pd.merge(df1, df2, how='outer', on=['key1', 'key2'], suffixes=['_1', '_2'])
joined = joined.fillna(0.0)
joined['value'] = joined['value_1'] + joined['value_2']
result = joined[['key1', 'key2', 'value']]
दोनों दृष्टिकोण परिणाम मैं चाहता हूँ दे, लेकिन मुझे आश्चर्य है कि अगर वहाँ एक आसान तरीका है।
ऐसा लगता है * उनकी प्रकृति की तरह एक और संक्षिप्त तरीका होना चाहिए ... एक मर्ज-टाइम एकत्रीकरण की तरह। –
मैं एक जादुई फ़ंक्शन की तलाश में था जो सबकुछ अनुकूलित तरीके से करता है। – Laurie
मैंने दृष्टिकोण 2 चुना है, और जितना संभव हो सके जंजीर सेशन क्योंकि यह इस तरह से तेज़ है। – Laurie