मैं दो डेटा फ़्रेम कैसे संयोजित करूं?


105

मैं पंडों के डेटा फ्रेम का उपयोग कर रहा हूं। मेरे पास एक प्रारंभिक डेटा फ्रेम है, कहते हैं D। मैं इस तरह से दो डेटा फ्रेम निकालता हूं:

A = D[D.label == k]
B = D[D.label != k]

तो मैं में लेबल बदल AऔरB

A.label = 1
B.label = -1

मैं A और B को संयोजित करना चाहता हूं, इसलिए मैं उन्हें एक डेटा फ्रेम, एक यूनियन ऑपरेशन की तरह कुछ कर सकता हूं। डेटा का क्रम महत्वपूर्ण नहीं है। हालांकि, जब हम डी से ए और बी का नमूना लेते हैं, तो वे डी से अपने अनुक्रमित को बनाए रखते हैं।

जवाबों:


148

मेरा मानना ​​है कि आप appendविधि का उपयोग कर सकते हैं

bigdata = data1.append(data2, ignore_index=True)

उनके अनुक्रमों को रखने के लिए केवल ignore_indexकीवर्ड का उपयोग न करें ...


1
यह काम। यह एक नया DataFrame हालांकि बनाता है। क्या यह इनलाइन करने का कोई तरीका है? यह अच्छा होगा जब मैं एक डेटाबेस से बड़ी मात्रा में डेटा को बैचों में लोड कर रहा हूं, ताकि मैं प्रत्येक बार प्रतिलिपि बनाने के बिना डेटाफ़्रेम को पुन: अद्यतन कर सकूं।
एंड्रयू

1
हां, यह संभव है, देखें: stackoverflow.com/a/46661368/5717580
मार्टिन-मार्टिन

91

आप तब भी उपयोग कर सकते हैं pd.concat, जो दो से अधिक डेटाफ्रेम में शामिल होने पर विशेष रूप से सहायक है:

bigdata = pd.concat([data1, data2], ignore_index=True, sort=False)

मैं इसका उपयोग करना चाहता हूं, लेकिन मैं एक ही नाम o_O के दो कॉलमों को जोड़ना चाह रहा हूं
आजीवन

45

अगर किसी को यह उपयोगी लगता है तो यहां इसे जोड़ने के लिए सोचा। @ostrokach ने पहले ही उल्लेख किया है कि आप पंक्तियों के पार डेटा फ़्रेम को कैसे मर्ज कर सकते हैं

df_row_merged = pd.concat([df_a, df_b], ignore_index=True)

स्तंभों में विलय करने के लिए, आप निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:

df_col_merged = pd.concat([df_a, df_b], axis=1)

14

इस मामले के लिए एक और समाधान है कि आप बड़े डेटा के साथ काम कर रहे हैं और कई डेटासेट्स को बदलना है। concatप्रदर्शन-गहन प्राप्त कर सकते हैं, इसलिए यदि आप हर बार एक नया df नहीं बनाना चाहते हैं, तो आप इसके बजाय सूची बोध का उपयोग कर सकते हैं :

frames = [ process_file(f) for f in dataset_files ]
result = pd.append(frames)

(जैसा कि अनुभाग के नीचे दिए गए डॉक्स में यहां बताया गया है ):

ध्यान दें : हालांकि यह ध्यान देने योग्य है, कि concat(और इसलिए append) डेटा की पूरी प्रतिलिपि बनाता है, और इस फ़ंक्शन का लगातार पुन: उपयोग करने से एक महत्वपूर्ण प्रदर्शन हिट हो सकता है। यदि आपको कई डेटासेट पर ऑपरेशन का उपयोग करने की आवश्यकता है, तो सूची समझ का उपयोग करें।


2

यदि आप पहले डेटाफ्रेम df1के मूल्यों को दूसरे डेटाफ्रेम के मूल्यों के साथ अद्यतन / बदलना चाहते हैं df2। आप निम्न चरणों का पालन कर सकते हैं -

चरण 1: पहले डेटाफ्रेम (df1) का इंडेक्स सेट करें

df1.set_index('id')

चरण 2: दूसरे डेटाफ्रेम (df2) का सूचकांक निर्धारित करें

df2.set_index('id')

और अंत में निम्नलिखित स्निपेट का उपयोग करके डेटाफ़्रेम अपडेट करें -

df1.update(df2)

0

1 डेटाफ़्रेम

train.shape

परिणाम:-

(31962, 3)

दूसरा डेटाफ़्रेम

test.shape

परिणाम:-

(17197, 2)

जोड़ना

new_data=train.append(test,ignore_index=True)

जाँच

new_data.shape

परिणाम:-

(49159, 3)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.