সিরিজ হিসাবে প্যান্ডাস ডেটাফ্রেমের প্রথম কলাম কীভাবে পাবেন?


142

আমি চেষ্টা করেছিলাম:

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

এবং sএকটি ডেটাফ্রেম পায়, সিরিজ নয়।

উত্তর:


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 বিকল্প যুক্ত করার উপযুক্ত হবে (যেমন এই পৃষ্ঠায় আরও নীচে জেফ প্রস্তাবিত), কারণ এটি নামের জন্য কলামগুলির উপস্থিতিতে অস্পষ্ট নয় amb
sapo_cosmico

4
উত্তরটি ২০১৩ সালে দেওয়া হয়েছিল; যতদূর আমার মনে .ilocআছে, তখনও সেখানে ছিল না। ২০১ In সালে, সঠিক উত্তরটি হ'ল জেফের (সর্বোপরি তিনি pandasGodশ্বর, আপনাকে মনে রাখবেন ;-))। আমি নিশ্চিত নই যে এপিআই পরিবর্তনের কারণে উত্তরগুলির আপডেটের বিষয়ে এসওয়ের নীতি কী; এই উত্তরের ভোটের সংখ্যা শুনে আমি সত্যই অবাক হয়েছি, ভাবেন নি যে এটি মানুষের পক্ষে
এতটা

2
আরেকটি নোট: ixছিল অবচিত সংস্করণ 0.20 হবে।
আয়ান

5
ixআর ব্যবহার করা উচিত নয়, ব্যবহার ilocপরিবর্তে: s = df.ix[:,0]। এবং এর তুলনা করার জন্য এই পোস্টটি দেখুন । ilocix
নরম্যানিয়াস

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
এটি নতুন রিলিজের সাথে এবং পুরানোগুলির সাথে সবচেয়ে উপযুক্ত সংস্করণ। এবং সম্ভবত সম্ভবত সবচেয়ে কার্যকর দক্ষ দলটি এই পদ্ধতির প্রচার করছে team
চমত্কার

116

নিম্নলিখিত কোড দ্বারা আপনি সিরিজ হিসাবে প্রথম কলামটি পেতে পারেন:

x[x.columns[0]]

আমি কীভাবে এর মতো শেষ কলামটি পেতে পারি?
পপুল

অন্যরাও ঠিকঠাক কাজ করে তবে এটিকে আরও স্বজ্ঞাত বলে মনে হয়।
এলপাস্টার

6
আপনার যদি একই নামের একাধিক কলাম থাকে তবে এটি ভাল নয়। কলামের নামগুলি অনন্য হওয়া উচিত কিনা তা আলাদা আলোচনা is
বিশাল

@ পলিx[x.columns[x.columns.size-1]]
ফুজিয়ানজিন 716471১

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.