তালিকা সূচকের ভিত্তিতে পান্ডাস সারি নির্বাচন করুন


115

আমার একটি ডেটাফ্রেম ডিএফ রয়েছে:

   20060930  10.103       NaN     10.103   7.981
   20061231  15.915       NaN     15.915  12.686
   20070331   3.196       NaN      3.196   2.710
   20070630   7.907       NaN      7.907   6.459

তারপরে আমি নির্দিষ্ট তালিকার নম্বর সহ সারিগুলি নির্বাচন করতে চাই যা একটি তালিকায় নির্দেশিত হয়েছে, ধরুন এখানে [1,3], তারপরে বাম:

   20061231  15.915       NaN     15.915  12.686
   20070630   7.907       NaN      7.907   6.459

কীভাবে বা কী ফাংশন এটি করতে পারে?

উত্তর:


137
ind_list = [1, 3]
df.ix[ind_list]

কৌতুক করা উচিত! আমি যখন ডেটা ফ্রেমের সাথে সূচী করি আমি সর্বদা .ix () পদ্ধতিটি ব্যবহার করি। এটি এত সহজ এবং আরও নমনীয় ...

হালনাগাদ সূচির জন্য এটি এখন আর গ্রহণযোগ্য পদ্ধতি নয়। ixপদ্ধতি অসমর্থিত হয়েছে। .ilocপূর্ণসংখ্যার ভিত্তিক সূচক এবং .locলেবেল ভিত্তিক সূচকের জন্য ব্যবহার করুন ।


18
এটি এখন অবচয় করা হয়েছে, .iloc অবস্থানিক সূচকগুলির জন্য ব্যবহার করা উচিত
t_warsop

99

আপনি আইলোকও ব্যবহার করতে পারেন:

df.iloc[[1,3],:]

আপনার ডেটাফ্রেমের সূচকগুলি পূর্ববর্তী গণনার কারণে সারিগুলির ক্রমের সাথে মিল না রাখলে এটি কাজ করবে না। সেক্ষেত্রে ব্যবহার করুন:

df.index.isin([1,3])

... অন্যান্য প্রতিক্রিয়া হিসাবে প্রস্তাবিত।


68

অন্য উপায় (যদিও এটি দীর্ঘতর কোড) তবে এটি উপরের কোডগুলির চেয়ে দ্রুত। % টাইমাইট ফাংশন ব্যবহার করে এটি পরীক্ষা করুন:

df[df.index.isin([1,3])]

PS: আপনি কারণ খুঁজে বের করুন

এখানে চিত্র বর্ণনা লিখুন


4
df.index.get_level_values(0).isinমাল্টিইন্ডেক্সের জন্য ব্যবহার করুন
CiaranWelsh

4

বড় ডেটাসেটের জন্য, skiprowsপ্যারামিটারের মাধ্যমে কেবল নির্বাচিত সারিগুলি পড়া মেমরির দক্ষ ।

উদাহরণ

pred = lambda x: x not in [1, 3]
pd.read_csv("data.csv", skiprows=pred, index_col=0, names=...)

এটি এখন এমন ফাইল থেকে ডেটা ফ্রেম ফিরিয়ে দেবে যা 1 এবং 3 ব্যতীত সমস্ত সারি এড়িয়ে যায়।


বিশদ

ডক্স থেকে :

skiprows : তালিকার মতো বা পূর্ণসংখ্যা বা কলযোগ্য, ডিফল্ট None

...

যদি কলযোগ্য হয়, কলযোগ্য ফাংশনটি সারি সূচকগুলির বিরুদ্ধে মূল্যায়ন করা হবে, যদি সারিটি বাদ দেওয়া হয় তবে সত্য এবং অন্যথায় মিথ্যা বলা উচিত returning একটি বৈধ কলযোগ্য যুক্তির উদাহরণ হতে পারেlambda x: x in [0, 2]

এই বৈশিষ্ট্যটি সংস্করণ পান্ডাস 0.20.0+ এ কাজ করে। আরও দেখুন সংশ্লিষ্ট ইস্যু এবং সংশ্লিষ্ট পোস্টে


0

এই সমস্যাটি সমাধানের অনেকগুলি উপায় রয়েছে এবং উপরের তালিকাভুক্তগুলি হ'ল সমাধানটি অর্জনের সর্বাধিক ব্যবহৃত উপায়। আমি আরও দুটি উপায় যুক্ত করতে চাই, যদি কেউ বিকল্পের সন্ধান করে।

index_list = [1,3]

df.take(pos)

#or

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