एक श्रृंखला के रूप में पंडों का पहला कॉलम DataFrame कैसे प्राप्त करें?


142

मैंने कोशिश की:

x=pandas.DataFrame(...)
s = x.take([0], axis=1)

और sएक सीरीज नहीं, बल्कि एक DataFrame मिलता है।

जवाबों:


141
>>> import pandas as pd
>>> df = pd.DataFrame({'x' : [1, 2, 3, 4], 'y' : [4, 5, 6, 7]})
>>> df
   x  y
0  1  4
1  2  5
2  3  6
3  4  7
>>> s = df.ix[:,0]
>>> type(s)
<class 'pandas.core.series.Series'>
>>>

================================================== =========================

अपडेट करें

यदि आप जून 2017 के बाद इसे पढ़ रहे हैं ix, तो इसे 0.20.2 पंडों में हटा दिया गया है, इसलिए इसका उपयोग न करें। उपयोग locया ilocइसके बजाय। इस सवाल पर टिप्पणी और अन्य जवाब देखें।


4
df.set_index('x').y
हर्फ़्ज़

4
.Iloc विकल्प को जोड़ने के लायक होगा (जैसा कि जेफ द्वारा इस पृष्ठ पर आगे प्रस्तावित किया गया है), क्योंकि यह नामों के लिए संख्याओं के साथ कॉलम की उपस्थिति में अस्पष्ट नहीं है।
sapo_cosmico

4
इसका जवाब 2013 में दिया गया था; जहाँ तक मुझे याद है, .ilocतब तक वापस नहीं आया था। 2016 में, सही उत्तर जेफ का है (आखिरकार वह pandasभगवान है, आपके मन में; ;-))। मुझे यकीन नहीं है कि एपीआई परिवर्तन के कारण उत्तर के अद्यतन के बारे में एसओ की नीति क्या है; मैं ईमानदारी से इस जवाब के लिए वोटों की संख्या से आश्चर्यचकित हूं, नहीं लगता था कि यह लोगों के लिए उपयोगी था ...
herrfz

2
एक और नोट: 0.20 संस्करण में पदावनतix किया गया
अहान

5
ixअब और नहीं किया जाना चाहिए, का उपयोग ilocकरने के बजाय: s = df.ix[:,0]। और की तुलना के लिए इस पोस्ट को देखें । ilocix
normanius

117

V0.11 + से, ... का उपयोग करें df.iloc

In [7]: df.iloc[:,0]
Out[7]: 
0    1
1    2
2    3
3    4
Name: x, dtype: int64

3
यह नई रिलीज़ के साथ और पुराने के साथ भी सबसे अधिक संगत संस्करण है। और शायद सबसे कुशल चूंकि देव टीम आधिकारिक तौर पर इस दृष्टिकोण को बढ़ावा दे रही है।
गबोरस

116

आप निम्नलिखित कोड द्वारा श्रृंखला के रूप में पहला कॉलम प्राप्त कर सकते हैं:

x[x.columns[0]]

मैं उस तरह अंतिम कॉलम कैसे प्राप्त कर सकता हूं?
पोली

दूसरों के रूप में अच्छी तरह से काम करते हैं, लेकिन यह एक अधिक सहज लगता है।
इलास्टैस्टर

6
यदि आपके पास एक ही नाम के साथ कई कॉलम हैं तो यह अच्छा नहीं है। कॉलम के नाम अद्वितीय होने चाहिए या नहीं, इस पर अलग से चर्चा हुई।
विशाल

@Pollyx[x.columns[x.columns.size-1]]
fujianjin6471

13

क्या यह सबसे सरल तरीका नहीं है?

स्तंभ नाम से:

In [20]: df = pd.DataFrame({'x' : [1, 2, 3, 4], 'y' : [4, 5, 6, 7]})
In [21]: df
Out[21]:
    x   y
0   1   4
1   2   5
2   3   6
3   4   7

In [23]: df.x
Out[23]:
0    1
1    2
2    3
3    4
Name: x, dtype: int64

In [24]: type(df.x)
Out[24]:
pandas.core.series.Series

9
इस विशेष मामले में आप पहले कॉलम ("x") का नाम जानते हैं, लेकिन सवाल का क्या मतलब था: "मैं पहले कॉलम का उपयोग कैसे कर सकता हूं, इसका नाम क्या है"। इसके अलावा, इस तरह के कॉलम एक्सेस करना ( df.x) सामान्य नहीं है - क्या होगा अगर कॉलम नाम में रिक्त स्थान हैं? क्या होगा यदि स्तंभ का DataFrameनाम -s विशेषता नाम के साथ मेल खाता है ? स्तंभों का उपयोग करना अधिक सामान्य है __getitem__(जैसे कि:) df["x"]
पोनादतो

2
यह भी काम नहीं करता है यदि कॉलम के हेडर में उदाहरण के लिए रिक्त स्थान हैं।
जीन-फ्रांस्वा कॉर्बेट

3

जब आप एक सीएसएसवी फ़ाइल से एक श्रृंखला लोड करना चाहते हैं तो यह बहुत अच्छा काम करता है

x = pd.read_csv('x.csv', index_col=False, names=['x'],header=None).iloc[:,0]
print(type(x))
print(x.head(10))


<class 'pandas.core.series.Series'>
0    110.96
1    119.40
2    135.89
3    152.32
4    192.91
5    177.20
6    181.16
7    177.30
8    200.13
9    235.41
Name: x, dtype: float64

0
df[df.columns[i]]

iस्तंभ की स्थिति / संख्या कहाँ है ( 0 से शुरू )

तो, i = 0पहले कॉलम के लिए है।

आप अंतिम कॉलम का भी उपयोग कर सकते हैं i = -1

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