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


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.