जवाबों:
मुझे लगता concat
है कि यह करने का एक अच्छा तरीका है। यदि वे मौजूद हैं तो यह श्रृंखला के नाम विशेषताओं को कॉलम के रूप में उपयोग करता है (अन्यथा यह बस उन्हें संख्या देता है):
In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')
In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')
In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
s1 s2
A 1 3
B 2 4
In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
index s1 s2
0 A 1 3
1 B 2 4
नोट: यह 2 से अधिक श्रृंखला तक फैला हुआ है।
pd.concat([list_of_dataframes])
बनाम कॉनकैट करना पसंद करना चाहिए new_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
।
यदि आप दोनों का अनुक्रमणिका समान है तो आप .to_frame का उपयोग क्यों नहीं करते?
> = v0.23
a.to_frame().join(b)
< v0.23
a.to_frame().join(b.to_frame())
पंडों को स्वचालित रूप से इन पारित श्रृंखलाओं में संरेखित किया जाएगा और संयुक्त सूचकांक बनाएंगे वे यहां एक ही होते हैं। reset_index
सूचकांक को एक कॉलम में ले जाता है।
In [2]: s1 = Series(randn(5),index=[1,2,4,5,6])
In [4]: s2 = Series(randn(5),index=[1,2,4,5,6])
In [8]: DataFrame(dict(s1 = s1, s2 = s2)).reset_index()
Out[8]:
index s1 s2
0 1 -0.176143 0.128635
1 2 -1.286470 0.908497
2 4 -0.995881 0.528050
3 5 0.402241 0.458870
4 6 0.380457 0.072251
उदाहरण कोड:
a = pd.Series([1,2,3,4], index=[7,2,8,9])
b = pd.Series([5,6,7,8], index=[7,2,8,9])
data = pd.DataFrame({'a': a,'b':b, 'idx_col':a.index})
पंडों आपको कुंजी के रूप में मान और स्तंभ नामों के साथ एक DataFrame
से एक बनाने की अनुमति देता है । जब यह मान के रूप में मिलता है , तो यह सूचकांक के हिस्से के रूप में सूचकांक का उपयोग करता है । यह डेटा संरेखण पंडों के मुख्य भत्तों में से एक है। नतीजतन, जब तक आपकी अन्य आवश्यकताएं नहीं होती हैं, तब तक नए सिरे से बनाए गए मूल्य में दोहराव होता है। उपरोक्त उदाहरण में, के समान डेटा है ।dict
Series
Series
Series
DataFrame
DataFrame
data['idx_col']
data.index
अगर मैं इसका जवाब दे सकता हूं।
श्रृंखला को डेटा फ्रेम में परिवर्तित करने के पीछे मूल सिद्धांतों को समझना है
1. वैचारिक स्तर पर, डेटा फ्रेम में प्रत्येक स्तंभ एक श्रृंखला है।
2. और, प्रत्येक कॉलम नाम एक प्रमुख नाम है जो एक श्रृंखला में मैप करता है।
यदि आप दो अवधारणाओं को ध्यान में रखते हैं, तो आप श्रृंखला को डेटा फ्रेम में बदलने के कई तरीकों के बारे में सोच सकते हैं। एक आसान समाधान इस प्रकार होगा:
यहां दो श्रृंखला बनाएं
import pandas as pd
series_1 = pd.Series(list(range(10)))
series_2 = pd.Series(list(range(20,30)))
केवल वांछित कॉलम नामों के साथ एक खाली डेटा फ़्रेम बनाएं
df = pd.DataFrame(columns = ['Column_name#1', 'Column_name#1'])
मानचित्रण अवधारणा का उपयोग करके डेटा फ़्रेम के अंदर श्रृंखला मान डालें
df['Column_name#1'] = series_1
df['Column_name#2'] = series_2
अब परिणाम देखें
df.head(5)
यकीन नहीं है कि मैं आपके सवाल को पूरी तरह से समझता हूं, लेकिन क्या आप ऐसा करना चाहते हैं?
pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)
( index=s1.index
यहाँ भी आवश्यक नहीं है)
के आधार पर समाधान का सरलीकरण join()
:
df = a.to_frame().join(b)
मैंने पंडों का उपयोग अपने संख्यात्मक सरणी या आइरिस को एक डेटाफ्रेम में परिवर्तित करने के लिए किया और फिर अतिरिक्त कॉलम को 'भविष्यवाणी' के रूप में कुंजी से जोड़ा। यदि आपको किसी सूची में वापस कनवर्ट की गई डेटाफ्रेम की आवश्यकता है, तो values.tolist () का उपयोग करें
output=pd.DataFrame(X_test)
output['prediction']=y_pred
list=output.values.tolist()