मेरे पास डेटाफ्रेम है जहां मैं 'ऑब्जेक्ट' से 'श्रेणी' के कई कॉलम बदलना चाहता हूं।एकाधिक पांडस डीएफ कॉलम को लूप के बिना वर्गीकृत करने के लिए कैसे बदलें
मैं नाव के लिए एक ही समय में कई स्तंभ को बदल सकते हैं,
dftest[['col3', 'col4', 'col5', 'col6']] = \
dftest[['col3', 'col4', 'col5', 'col6']].astype(float)
'श्रेणी' मैं यह एक ही मैं एक के बाद एक करने की ज़रूरत नहीं कर सकते, के लिए (या here की तरह एक पाश में) ।
for col in ['col1', 'col2']:
dftest[col] = dftest[col].astype('category')
प्रश्न: वहाँ बदलाव के लिए सभी 'नाव' उदाहरण में एक बार की तरह में कॉलम चाहता था ऐसा करने का कोई तरीका है?
अगर मैं एक ही समय में कई स्तंभ करने की कोशिश मेरे पास है:
dftest[['col1','col2']] = dftest[['col1','col2']].astype('category')
## NotImplementedError: > 1 ndim Categorical are not supported at this time
मेरे वर्तमान कार्यशील परीक्षण कोड:
import numpy as np
import pandas as pd
factors= np.array([
['a', 'xx'],
['a', 'xx'],
['ab', 'xx'],
['ab', 'xx'],
['ab', 'yy'],
['cc', 'yy'],
['cc', 'zz'],
['d', 'zz'],
['d', 'zz'],
['g', 'zz']
])
values = np.random.randn(10,4).round(2)
dftest = pd.DataFrame(np.hstack([factors,values]),
columns = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6'])
#dftest[['col1','col2']] = dftest[['col1','col2']].astype('category')
## NotImplementedError: > 1 ndim Categorical are not supported at this time
## it works with individual astype
#dftest['col2'] = dftest['col2'].astype('category')
#dftest['col1'] = dftest['col1'].astype('category')
print(dftest)
## doing a loop
for col in ['col1', 'col2']:
dftest[col] = dftest[col].astype('category')
dftest[['col3', 'col4', 'col5', 'col6']] = \
dftest[['col3', 'col4', 'col5', 'col6']].astype(float)
dftest.dtypes
उत्पादन:
col1 category
col2 category
col3 float64
col4 float64
col5 float64
col6 float64
dtype: object
== [अपडेट] ==
मुझे अब लूप का उपयोग करने में कोई समस्या नहीं है, जिसे मैं चाल जानता हूं, लेकिन मैंने सवाल पूछा क्योंकि मैं सीखना/समझना चाहता था कि मुझे 'श्रेणी' के लिए लूप करने की ज़रूरत क्यों है और फ्लोट के लिए नहीं, अगर वहां ऐसा करने का कोई और तरीका नहीं है।
जिज्ञासा से बाहर, बिंदु क्या है? स्पीड? – IanS
@IanS मेरा अपडेट देखें –
"लागू नहीं किया गया" आम तौर पर इसका अर्थ है कि यह भविष्य के संस्करण के लिए योजनाबद्ध है। वर्गीकृत अपेक्षाकृत नए हैं इसलिए हम भविष्य में 1 से अधिक कॉलम के लिए काम करने के लिए '.astype (' श्रेणी) 'की अपेक्षा कर सकते हैं। – ayhan