python - प्रतिलिपि के रूप में नए चयनित डेटा के लिए विशिष्ट चयनित कॉलम निकालना




pandas chained-assignment (4)

एक और सरल तरीका लगता है:

new = pd.DataFrame ([old.A, old.B, old.C])। transpose ()

जहाँ old.column_name आपको एक श्रृंखला देगा। उन सभी स्तंभ-श्रृंखलाओं की एक सूची बनाएं जिन्हें आप डेटाफ़्रेम कंस्ट्रक्टर को बनाए रखना और पास करना चाहते हैं। हमें आकृति को समायोजित करने के लिए एक संक्रमण करने की आवश्यकता है।

In [14]:pd.DataFrame([old.A,old.B,old.C]).transpose()
Out[14]: 
   A   B    C
0  4  10  100
1  5  20   50

मेरे पास 4 कॉलम के साथ एक पांडा डेटाफ़्रेम है और मैं एक नया डेटाफ़्रेम बनाना चाहता हूं जिसमें केवल तीन कॉलम हों। यह प्रश्न समान है: किसी डेटा फ़्रेम से विशिष्ट स्तंभों को निकालना, लेकिन पंडों के लिए नहीं। आर। निम्न कोड काम नहीं करता है, एक त्रुटि उठाता है, और निश्चित रूप से इसे करने के लिए पंडासनिक तरीका नहीं है।

import pandas as pd
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]})
new = pd.DataFrame(zip(old.A, old.C, old.D)) # raises TypeError: data argument can't be an iterator 

इसे करने का पांडासनिक तरीका क्या है?


ऐसा करने का एक तरीका है और यह वास्तव में R के समान दिखता है

new = old[['A', 'C', 'D']].copy()

यहां आप मूल डेटा फ़्रेम से इच्छित कॉलम का चयन कर रहे हैं और उन लोगों के लिए एक चर बना रहे हैं। यदि आप नए डेटाफ़्रेम को बिल्कुल संशोधित करना चाहते हैं, तो शायद आप .copy() से बचने के लिए .copy() का उपयोग करना चाहते हैं।

एक वैकल्पिक विधि filter का उपयोग करना है जो डिफ़ॉल्ट रूप से एक प्रति बनाएगा:

new = old.filter(['A','B','D'], axis=1)

अंत में, आपके मूल डेटाफ़्रेम में स्तंभों की संख्या के आधार पर, एक drop का उपयोग करके इसे व्यक्त करना अधिक उपयुक्त हो सकता है (यह डिफ़ॉल्ट रूप से एक प्रतिलिपि भी बनाएगा):

new = old.drop('B', axis=1)

सबसे आसान तरीका है

def select_columns(data_frame, column_names):
    new_frame = data_frame.loc[:, column_names]
    return new_frame


सूचकांक द्वारा कॉलम:

 # selected column index: 1, 6, 7 new = old.iloc[: , [1, 6, 7]].copy() 





chained-assignment