পান্ডাস ডেটা ফ্রেমের শিরোনাম থেকে আমি কীভাবে সাদা স্থানটি ছিনিয়ে নিতে পারি?


96

আমি কোনও এক্সেল ফাইলের ডেটা পার্স করছি যা কিছু কলাম শিরোনামে অতিরিক্ত সাদা স্থান রয়েছে।

আমি যখন এর সাথে ফলাফলযুক্ত ডেটা ফ্রেমের কলামগুলি পরীক্ষা করি df.columns, তখন আমি দেখতে পাই:

Index(['Year', 'Month ', 'Value'])
                     ^
#                    Note the unwanted trailing space on 'Month '

ফলস্বরূপ, আমি করতে পারি না:

df["Month"]

কারণ এটি আমাকে বলবে যে কলামটি পাওয়া যায় নি, যেমন আমি "মাস" চেয়েছি, "মাস" নয়।

আমার প্রশ্ন, তাহলে, আমি কীভাবে কলাম শিরোনামগুলি থেকে অযাচিত সাদা স্থানটি ছিনিয়ে নিতে পারি?

উত্তর:


142

আপনি renameপদ্ধতিতে ফাংশন দিতে পারেন । str.strip()পদ্ধতি কি আপনি চান করতে হবে।

In [5]: df
Out[5]: 
   Year  Month   Value
0     1       2      3

[1 rows x 3 columns]

In [6]: df.rename(columns=lambda x: x.strip())
Out[6]: 
   Year  Month  Value
0     1      2      3

[1 rows x 3 columns]

দ্রষ্টব্য : এটি কোনও DataFrameজিনিস ফেরত দেয় এবং এটি স্ক্রিনে আউটপুট হিসাবে প্রদর্শিত হয়, তবে পরিবর্তনগুলি আসলে আপনার কলামগুলিতে সেট করা থাকে না। পরিবর্তনগুলি সংঘটিত করতে, ব্যবহার করুন:

  1. inplace=Trueযুক্তি [ডক্স] ব্যবহার করুন
df.rename(columns=lambda x: x.strip(), inplace=True)
  1. আপনার dfপরিবর্তনশীল এটিকে পুনরায় বরাদ্দ করুন :
df = df.rename(columns=lambda x: x.strip())

64

আপনি .str.stripযদি সাম্প্রতিক সংস্করণটি ব্যবহার করেন তবে আপনি এখনই কলামগুলিতে কল করতে পারেন :

In [5]:
df = pd.DataFrame(columns=['Year', 'Month ', 'Value'])
print(df.columns.tolist())
df.columns = df.columns.str.strip()
df.columns.tolist()

['Year', 'Month ', 'Value']
Out[5]:
['Year', 'Month', 'Value']

সময়

In[26]:
df = pd.DataFrame(columns=[' year', ' month ', ' day', ' asdas ', ' asdas', 'as ', '  sa', ' asdas '])
df
Out[26]: 
Empty DataFrame
Columns: [ year,  month ,  day,  asdas ,  asdas, as ,   sa,  asdas ]


%timeit df.rename(columns=lambda x: x.strip())
%timeit df.columns.str.strip()
1000 loops, best of 3: 293 µs per loop
10000 loops, best of 3: 143 µs per loop

সুতরাং str.strip~ 2 এক্স দ্রুত, আমি এটি আরও বড় ডিএফএসের জন্য আরও ভাল স্কেল করার প্রত্যাশা করি


9

আপনি যদি এক্সেল থেকে রফতানি করতে এবং পান্ডাস ডেটা ফ্রেম হিসাবে পড়তে সিএসভি ফর্ম্যাট ব্যবহার করেন তবে আপনি উল্লেখ করতে পারেন:

skipinitialspace=True

যখন কলিং pd.read_csv

ডকুমেন্টেশন থেকে :

skipinitialspace: বুল, ডিফল্ট মিথ্যা

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