मैं पंडों DataFrame हेडर से व्हॉट्सएप कैसे छीन सकता हूं?


94

मैं एक Excel फ़ाइल से डेटा पार्स कर रहा हूं जिसमें कुछ कॉलम हेडिंग में अतिरिक्त सफेद स्थान है।

जब मैं परिणामी डेटाफ्रेम के कॉलम की जांच करता df.columnsहूं, तो मैं देखता हूं:

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

नतीजतन, मैं ऐसा नहीं कर सकता:

df["Month"]

क्योंकि यह मुझे बताएगा कि कॉलम नहीं मिला है, जैसा कि मैंने "महीना" के लिए कहा था, "महीना" नहीं।

मेरा सवाल यह है कि मैं कॉलम हेडिंग से अवांछित सफेद स्थान को कैसे निकाल सकता हूं?

जवाबों:


136

आप 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())

63

.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~ 2X तेज है, मुझे उम्मीद है कि यह बड़े dfs के लिए बेहतर होगा


8

यदि आप Excel से निर्यात करने के लिए CSV प्रारूप का उपयोग करते हैं और पंडों के डेटाफ़्रेम के रूप में पढ़ते हैं, तो आप निर्दिष्ट कर सकते हैं:

skipinitialspace=True

जब बुला रहा है pd.read_csv

से प्रलेखन :

Skipinitialspace: बूल, डिफ़ॉल्ट गलत

Skip spaces after delimiter.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.