मैं परिणाम के रूप में स्ट्रिंग युक्त तालिका के एक पिवट करने की कोशिश कर रहा हूं।पांडा - गैर-संख्यात्मक मानों के साथ pivot_table? (DataError: कुल संख्या के लिए कोई संख्यात्मक प्रकार)
import pandas as pd
df1 = pd.DataFrame({'index' : range(8),
'variable1' : ["A","A","B","B","A","B","B","A"],
'variable2' : ["a","b","a","b","a","b","a","b"],
'variable3' : ["x","x","x","y","y","y","x","y"],
'result': ["on","off","off","on","on","off","off","on"]})
df1.pivot_table(values='result',rows='index',cols=['variable1','variable2','variable3'])
लेकिन मुझे मिलता है: DataError: No numeric types to aggregate
।
यह इरादा के रूप में जब मैं नंबरों के लिए परिणाम मूल्यों को बदल काम करता है:
df2 = pd.DataFrame({'index' : range(8),
'variable1' : ["A","A","B","B","A","B","B","A"],
'variable2' : ["a","b","a","b","a","b","a","b"],
'variable3' : ["x","x","x","y","y","y","x","y"],
'result': [1,0,0,1,1,0,0,1]})
df2.pivot_table(values='result',rows='index',cols=['variable1','variable2','variable3'])
और मैं मैं अपनी ज़रूरत की चीज़ों:
variable1 A B
variable2 a b a b
variable3 x y x y x y
index
0 1 NaN NaN NaN NaN NaN
1 NaN NaN 0 NaN NaN NaN
2 NaN NaN NaN NaN 0 NaN
3 NaN NaN NaN NaN NaN 1
4 NaN 1 NaN NaN NaN NaN
5 NaN NaN NaN NaN NaN 0
6 NaN NaN NaN NaN 0 NaN
7 NaN NaN NaN 1 NaN NaN
मैं जानता हूँ कि मैं संख्यात्मक मानों के लिए तार के नक्शे और फिर रिवर्स कर सकते हैं ऑपरेशन, लेकिन शायद एक और सुरुचिपूर्ण समाधान है?
आखिरकार पंडों में पिवट() परिवर्तनों को बदलने के लिए एक समाधान 0.17.1 – camdenl
@RandallGoodwin, मुझे एहसास है कि यह प्रश्न दो साल का है, लेकिन मुझे त्रुटि मिल रही है "ValueError: फ़ंक्शन कम नहीं करता है "अपने लैम्ब्डा का उपयोग करके, अपने सिर के ऊपर से आपको पता चलेगा क्यों? – RustyShackleford
एक और विचार: यदि आपके पास संभावित रूप से कई मान दिखाई देंगे, तो आप अपने 'aggfunc = lambda x: "" .join ([str) y में x के लिए बनाकर स्ट्रिंग को जोड़ सकते हैं]) – dllahr