2012-11-30 16 views
7

मुझे एहसास है कि डेटाफ्रेम {'series_name' का नक्शा लेता है: श्रृंखला (डेटा, अनुक्रमणिका)}। हालांकि, यह नक्शा स्वचालित रूप से उस मानचित्र को टाइप करता है भले ही नक्शा एक ऑर्डर्ड डिक्ट() है।मैं एक पांडस डेटाफ्रेम में श्रृंखला की एक सूची कैसे पास करूं?

क्या सीरीज़ (डेटा, इंडेक्स, नाम = नाम) की सूची उत्तीर्ण करने का कोई आसान तरीका है कि ऑर्डर संरक्षित है और कॉलम नाम श्रृंखला.नाम हैं? क्या कोई आसान तरीका है यदि सभी सूचकांक सभी श्रृंखलाओं के लिए समान हैं?

मैं आमतौर पर श्रृंखला.वृत्तों के एक numpy column_stack को पास करके और कॉलम नाम निर्दिष्ट करके ऐसा करता हूं। हालांकि, यह बदसूरत है और इस विशेष मामले में डेटा स्ट्रिंग्स नहीं है।

+0

ठीक तो तार वास्तव में NumPy सरणी और मैं में काम करते हैं एक समाधान है फिर भी यह एक हैक की तरह लगता है और मैं सोच रहा था कि एक साफ समाधान था या नहीं। – rhaskett

उत्तर

10

आप इस्तेमाल कर सकते हैं pandas.concat:

import pandas as PD 
from pandas.util.testing import rands 

data = [PD.Series([rands(4) for j in range(6)], 
        index=PD.date_range('1/1/2000', periods=6), 
        name='col'+str(i)) for i in range(4)] 

df = PD.concat(data, axis=1, keys=[s.name for s in data]) 
print(df) 

पैदावार

  col0 col1 col2 col3 
2000-01-01 GqcN Lwlj Km7b XfaA 
2000-01-02 lhNC nlSm jCYu XLVb 
2000-01-03 sSRz PFby C1o5 0BJe 
2000-01-04 khZb Ny9p crUY LNmc 
2000-01-05 hmLp 4rVp xF2P OmD9 
2000-01-06 giah psQb T5RJ oLSh 
+0

सुंदर धन्यवाद। – rhaskett

6
a = pd.Series(data=[1,2,3]) 
b = pd.Series(data=[4,5,6]) 
a.name = 'a' 
b.name= 'b' 

pd.DataFrame(zip(a,b), columns=[a.name, b.name]) 

या सिर्फ dataframes concat

pd.concat([pd.DataFrame(a),pd.DataFrame(b)], axis=1) 

In [53]: %timeit pd.DataFrame(zip(a,b), columns=[a.name, b.name]) 
1000 loops, best of 3: 362 us per loop 

In [54]: %timeit pd.concat([pd.DataFrame(a),pd.DataFrame(b)], axis=1) 
1000 loops, best of 3: 808 us per loop 
+0

क्या ज़िप तेजी से होगा यदि सूचकांक/डेटा दोनों के लिए समान लंबाई है? – rhaskett

+0

गति संपीड़न के लिए संपादित पोस्ट। हां यह तेज़ – locojay

1

बाहर चेक DataFrame.from_items भी

+0

इस उदाहरण में 'DataFrame.from_items' कैसे काम करेगा? –

+0

'' DataFrame.from_items ([, ...]) '' – chris

+0

उफ़, मेरा मतलब: '' DataFrame.from_items ([('स्तम्भ 1', ), ('कॉलम 2', ), .. ।]) '' – chris

2

बस श्रृंखला की सूची DataFrame पर पास कर रहा है तो ट्रांसपोज़िंग भी काम करने लगता है। यह किसी भी सूचकांक को भी भर देगा जो एक या दूसरी श्रृंखला से गायब है।

import pandas as pd 
from pandas.util.testing import rands 
data = [pd.Series([rands(4) for j in range(6)], 
        index=pd.date_range('1/1/2000', periods=6), 
        name='col'+str(i)) for i in range(4)] 
df = pd.DataFrame(data).T 
print(df) 
1

श्रृंखला की सूची बिल्ड:

import pandas as pd 
import numpy as np 

> series = [pd.Series(np.random.rand(3), name=c) for c in list('abcdefg')] 

सबसे पहले विधि:

> pd.DataFrame.from_items([(s.name, s) for s in series]) 
      a   b   c   d   e   f   g 
0 0.071094 0.077545 0.299540 0.377555 0.751840 0.879995 0.933399 
1 0.538251 0.066780 0.415607 0.796059 0.718893 0.679950 0.502138 
2 0.096001 0.680868 0.883778 0.210488 0.642578 0.023881 0.250317 

दूसरी विधि:

> pd.concat(series, axis=1) 
      a   b   c   d   e   f   g 
0 0.071094 0.077545 0.299540 0.377555 0.751840 0.879995 0.933399 
1 0.538251 0.066780 0.415607 0.796059 0.718893 0.679950 0.502138 
2 0.096001 0.680868 0.883778 0.210488 0.642578 0.023881 0.250317 

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

  • कोई संबंधित समस्या नहीं^_^