जब पांडा DataFrame
को ढेर करते हैं, तो Series
वापस आ जाता है। आम तौर पर जब मैं DataFrame
ढेर करता हूं, तो मैं इसे वापस DataFrame
में परिवर्तित करता हूं। हालांकि, स्टैक्ड डेटा से आने वाले डिफ़ॉल्ट नाम कॉलम को थोड़ा हैकी का नाम बदलते हैं। मैं जो खोज रहा हूं वह स्टैकिंग के बाद कॉलम समझदार नाम देने के लिए एक आसान/अंतर्निहित तरीका है।पांडों को ढेर करते समय कॉलम नाम सेट करें डेटाफ्रेम
जैसे, के लिए निम्नलिखित DataFrame
:
In [64]: df = pd.DataFrame({'id':[1,2,3],
...: 'date':['2015-09-31']*3,
...: 'value':[100, 95, 42],
...: 'value2':[200, 57, 27]}).set_index(['id','date'])
In [65]: df
Out[65]:
value value2
id date
1 2015-09-31 100 200
2 2015-09-31 95 57
3 2015-09-31 42 27
मैं ढेर और इसे वापस कन्वर्ट करने के लिए एक DataFrame
तो जैसे:
In [68]: df.stack().reset_index()
Out[68]:
id date level_2 0
0 1 2015-09-31 value 100
1 1 2015-09-31 value2 200
2 2 2015-09-31 value 95
3 2 2015-09-31 value2 57
4 3 2015-09-31 value 42
5 3 2015-09-31 value2 27
तो आदेश मैं ऐसा करने की आवश्यकता होगी उचित रूप से इन स्तंभों में नाम के लिए इस तरह कुछ:
In [72]: stacked = df.stack()
In [73]: stacked
Out[73]:
id date
1 2015-09-31 value 100
value2 200
2 2015-09-31 value 95
value2 57
3 2015-09-31 value 42
value2 27
dtype: int64
In [74]: stacked.index.set_names('var_name', level=len(stacked.index.names)-1, inplace=True)
In [88]: stacked.reset_index().rename(columns={0:'value'})
Out[88]:
id date var_name value
0 1 2015-09-31 value 100
1 1 2015-09-31 value2 200
2 2 2015-09-31 value 95
3 2 2015-09-31 value2 57
4 3 2015-09-31 value 42
5 3 2015-09-31 value2 27
आदर्श रूप से,
df.stack(new_index_name='var_name', new_col_name='value')
लेकिन docs को देखकर यह नहीं लगता है stack
किसी भी तरह के तर्क लेता है की तरह: समाधान कुछ इस तरह दिखेगा। क्या इस वर्कफ़्लो से निपटने के लिए पांडा में एक आसान/अंतर्निहित तरीका है?
+1 लेकिन विस्तार का एक छोटा सा आदर्श होगा। इसके अलावा पूंजी कॉलम नामों को शुरू कर सकती है क्योंकि मुझे इतने सारे मूल्यों के साथ भ्रमित हो गया है। – josh