অবস্থান অনুসারে পান্ডাস কলাম নির্বাচন করা


105

আমি কেবল পূর্ণসংখ্যার দ্বারা নামী পান্ডাস কলামগুলি অ্যাক্সেস করার চেষ্টা করছি।

আপনি অবস্থান ব্যবহার করে একটি সারি নির্বাচন করতে পারেন df.ix[3]

তবে পূর্ণসংখ্যা অনুসারে একটি কলাম কীভাবে নির্বাচন করবেন?

আমার ডেটাফ্রেম:

df=pandas.DataFrame({'a':np.random.rand(5), 'b':np.random.rand(5)})

একটি প্রশ্ন জিজ্ঞাসা করার জন্য আপডেট।
জেসন স্ট্রিম্পেল

এই উদাহরণে, কলামগুলির ক্রম সংজ্ঞায়িত নাও হতে পারে। ('ক' প্রথম বা দ্বিতীয় কলাম হতে পারে)।
ব্যবহারকারী 48956

উত্তর:


160

দুটি পন্থা যা মনে আসে:

>>> df
          A         B         C         D
0  0.424634  1.716633  0.282734  2.086944
1 -1.325816  2.056277  2.583704 -0.776403
2  1.457809 -0.407279 -1.560583 -1.316246
3 -0.757134 -1.321025  1.325853 -2.513373
4  1.366180 -1.265185 -2.184617  0.881514
>>> df.iloc[:, 2]
0    0.282734
1    2.583704
2   -1.560583
3    1.325853
4   -2.184617
Name: C
>>> df[df.columns[2]]
0    0.282734
1    2.583704
2   -1.560583
3    1.325853
4   -2.184617
Name: C

সম্পাদনা করুন : মূল উত্তরটি ব্যবহারের পরামর্শ df.ix[:,2]দিচ্ছিল তবে এই ফাংশনটি এখন অবচয় করা হয়েছে। ব্যবহারকারীদের স্যুইচ করা উচিত df.iloc[:,2]


28
অবগতির জন্য df.ix এখন df.iloc সঙ্গে প্রতিস্থাপিত হয়
yosemite_k

নোট করুন যে আপনার যদি একই নাম df.iloc [:, 2] পদ্ধতিতে দুটি কলাম থাকে তবে কেবল একটি কলাম ফিরে আসবে কিন্তু df [df.colums [2]] পদ্ধতিতে একই নাম দিয়ে উভয় কলাম ফিরে আসবে।
ববিজি

55

আপনি df.icol(n)পূর্ণসংখ্যার দ্বারা কলামটি অ্যাক্সেস করতেও ব্যবহার করতে পারেন।

আপডেট: icolহ্রাস করা হয় এবং একই কার্যকারিতা দ্বারা অর্জন করা যেতে পারে:

df.iloc[:, n]  # to access the column at the nth position

4
নোট করুন যে আসন্ন সংস্করণ 0.11.0 এর জন্য, এই পদ্ধতিগুলি অবচিত করা হয়েছে এবং ভবিষ্যতের সংস্করণগুলিতে সরানো হতে পারে। Iloc / iat ব্যবহার করে পজিশনে কীভাবে নির্বাচন করবেন সে সম্পর্কে pandas.pydata.org/pandas-docs/dev/… দেখুন ।
ওয়াউটার ওভারমায়ার

4
উপরের লিঙ্কটি অবহিত করা হয়েছে কারণ সূচীকরণ ডক্সের পর থেকে পুনর্গঠন করা হয়েছে: pandas.pydata.org/pandas-docs/stable/… । আজকের হিসাবে, যেখানে সর্বাধিক সাম্প্রতিক সংস্করণটি 0.21.0, ilocপজিশনে একটি কলাম অ্যাক্সেস করার জন্য নথিভুক্ত পদ্ধতি অবধি রয়েছে।
iff_or

21

আপনি কলাম রেঞ্জ সহ কলাম-স্লাইসিং করতে .loc পদ্ধতি ব্যবহার করে .loc বা সূচী ভিত্তিক লেবেল ব্যবহার করতে পারেন :

In [50]: import pandas as pd

In [51]: import numpy as np

In [52]: df = pd.DataFrame(np.random.rand(4,4), columns = list('abcd'))

In [53]: df
Out[53]: 
          a         b         c         d
0  0.806811  0.187630  0.978159  0.317261
1  0.738792  0.862661  0.580592  0.010177
2  0.224633  0.342579  0.214512  0.375147
3  0.875262  0.151867  0.071244  0.893735

In [54]: df.loc[:, ["a", "b", "d"]] ### Selective columns based slicing
Out[54]: 
          a         b         d
0  0.806811  0.187630  0.317261
1  0.738792  0.862661  0.010177
2  0.224633  0.342579  0.375147
3  0.875262  0.151867  0.893735

In [55]: df.loc[:, "a":"c"] ### Selective label based column ranges slicing
Out[55]: 
          a         b         c
0  0.806811  0.187630  0.978159
1  0.738792  0.862661  0.580592
2  0.224633  0.342579  0.214512
3  0.875262  0.151867  0.071244

In [56]: df.iloc[:, 0:3] ### Selective index based column ranges slicing
Out[56]: 
          a         b         c
0  0.806811  0.187630  0.978159
1  0.738792  0.862661  0.580592
2  0.224633  0.342579  0.214512
3  0.875262  0.151867  0.071244

6

আপনি ডেটা ফ্রেম.িক্সে কলাম সূচকের একটি তালিকা পাস করে একাধিক কলামগুলি অ্যাক্সেস করতে পারেন।

উদাহরণ স্বরূপ:

>>> df = pandas.DataFrame({
             'a': np.random.rand(5),
             'b': np.random.rand(5),
             'c': np.random.rand(5),
             'd': np.random.rand(5)
         })

>>> df
          a         b         c         d
0  0.705718  0.414073  0.007040  0.889579
1  0.198005  0.520747  0.827818  0.366271
2  0.974552  0.667484  0.056246  0.524306
3  0.512126  0.775926  0.837896  0.955200
4  0.793203  0.686405  0.401596  0.544421

>>> df.ix[:,[1,3]]
          b         d
0  0.414073  0.889579
1  0.520747  0.366271
2  0.667484  0.524306
3  0.775926  0.955200
4  0.686405  0.544421

1

পদ্ধতি। ট্রান্সপোজ () কলামগুলিকে সারি এবং সারিগুলিকে কলামে রূপান্তর করে, সুতরাং আপনি এমনকি লিখতেও পারেন

df.transpose().ix[3]

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