2013-09-05 8 views
28

मैं आकार का एक पांडा डेटा फ्रेम वस्तु (एक्स, वाई) है कि इस तरह दिखता है:पांडा डेटा फ्रेम करने के लिए स्तंभ के रूप में numpy सरणी जोड़े

[[1, 2, 3], 
[4, 5, 6], 
[7, 8, 9]] 

और एक numpy विरल मैट्रिक्स (सीएससी) के आकार का (एक्स , जेड) है कि इस

[[0, 1, 0], 
[0, 0, 1], 
[1, 0, 0]] 

मैं एक नए नामित स्तंभ में डेटा फ्रेम करने के लिए मैट्रिक्स से सामग्री जोड़ सकते हैं जैसे कुछ ऐसी है कि डेटा फ्रेम इस तरह खत्म हो जाएगा दिखता है:

[[1, 2, 3, [0, 1, 0]], 
[4, 5, 6, [0, 0, 1]], 
[7, 8, 9, [1, 0, 0]]] 

डेटा फ्रेम पर ध्यान दें अब आकार (एक्स, वाई + 1) है और मैट्रिक्स से पंक्तियां डेटा फ्रेम में तत्व हैं।

+1

इस तरह के घोंसले को निराश किया जाता है। आपको ऐसा करने की ज़रूरत क्यों है? –

+0

यह प्रश्न देखें: http://stackoverflow.com/q/18641148/564538 –

+0

मैं मर्ज के बाद एक कॉलम नाम से मैट्रिक्स की पिछली सामग्री को चुनने की संभावना को बरकरार रखना चाहता हूं। –

उत्तर

22
import numpy as np 
import pandas as pd 
import scipy.sparse as sparse 

df = pd.DataFrame(np.arange(1,10).reshape(3,3)) 
arr = sparse.coo_matrix(([1,1,1], ([0,1,2], [1,2,0])), shape=(3,3)) 
df['newcol'] = arr.toarray().tolist() 
print(df) 

पैदावार

0 1 2  newcol 
0 1 2 3 [0, 1, 0] 
1 4 5 6 [0, 0, 1] 
2 7 8 9 [1, 0, 0] 
+3

मुझे लगता है कि हम वास्तव में उन उपयोगकर्ताओं के लिए बुलेटप्रूफ जूते प्रदान नहीं कर सकते हैं जो इस तरह की चीजों को करने पर जोर देते हैं:/ –

+6

[दिलचस्प चीजें हैं जो आप सूचियों के कॉलम के साथ कर सकते हैं] (http: // stackoverflow.com/a/16637607/190597), इसलिए मैं यह नहीं मानूंगा कि यह एक बुरा विचार है। हालांकि मैं मानता हूं कि यह एक उच्च अवसर है कि यह है। – unutbu

+1

यह 'पांडा' लचीलापन का एक अद्भुत उदाहरण है। * इस * प्रश्न के मामले में, डेटा पहले से ही समरूप संख्यात्मक प्रकार के बराबर आकार वाली पंक्तियों के साथ हैं, जबकि उस उदाहरण में वे अलग-अलग लंबाई की सूची हैं। मैं मानता हूं कि दिलचस्प चीजें हैं जो आप कर सकते हैं। हालांकि, जब आप पहले से ही एक मैट्रिक्स प्राप्त कर चुके हैं तो इसे सूचियों की सूची में क्यों बदल दें? –

8

एक उच्च आयामी आंकड़ा संरचना (एक Panel) का उपयोग करने के बजाय अपने कॉलम में एक सरणी के भंडारण पर विचार करें: वर्गों के पार आदि, आदि पर

In [11]: p = pd.Panel({'df': df, 'csc': csc}) 

In [12]: p.df 
Out[12]: 
    0 1 2 
0 1 2 3 
1 4 5 6 
2 7 8 9 

In [13]: p.csc 
Out[13]: 
    0 1 2 
0 0 1 0 
1 0 0 1 
2 1 0 0 

देखो , आदि

In [14]: p.xs(0) 
Out[14]: 
    csc df 
0 0 1 
1 1 2 
2 0 3 

See the docs for more on Panels

+4

पैनल अब –

+0

हटा दिया गया है हां, आमतौर पर मल्टीइंडेक्स की आजकल अनुशंसा की जाती है। उदाहरण बनाया गया 'pd.concat के माध्यम से ([डीएफ, सीएससी], अक्ष = 1, कुंजी = [" डीएफ "," सीएससी "])'। –

+0

'ए = एनपी.एई (3); डीएफ = पीडी.कोनकैट ([ए, ए], अक्ष = 1) '-> टाइप एरर: 20.2 में गैर-एनडीफ़्रेम ऑब्जेक्ट को संयोजित नहीं कर सकता है? ("पांडा-बहिष्कृत-अब-उपयोग-यह" का विकी अच्छा होगा।) – denis

संबंधित मुद्दे