2013-05-07 20 views
6

क्या डेटाफ्रेम में प्रत्येक पंक्ति के लिए एक ही मान प्राप्त करने के लिए Pandas.DataFrame में सभी कॉलम गुणा करना संभव है?एक पांडस डेटाफ्रेम में सभी कॉलम गुणा करें

उदाहरण के लिए, का उपयोग कर

df = pd.DataFrame(np.random.randn(5,3)*10) 

मैं एक नया DataFramedf2 जहां df2.ix[x,0]df.ix[x,0] * df.ix[x,1] * df.ix[x,2] का मूल्य होगा चाहते हैं।

हालांकि मैं इसे हार्डकोड नहीं करना चाहता, मैं इसे प्राप्त करने के लिए लूप का उपयोग कैसे कर सकता हूं?

मुझे एक समारोह df.mul(series, axis=1) मिला लेकिन मेरे उद्देश्य के लिए इसका उपयोग करने का कोई तरीका नहीं पता।

उत्तर

13

आप DataFrame.prod() इस्तेमाल कर सकते हैं:

>>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3))) 
>>> df 
    0 1 2 
0 7 7 5 
1 1 8 6 
2 4 8 4 
3 2 9 5 
4 3 8 7 
>>> df.prod(axis=1) 
0 245 
1  48 
2 128 
3  90 
4 168 
dtype: int64 

आप कर सकते थे भी applynp.prod, जो कि मैं मूल रूप से क्या किया था, लेकिन आम तौर पर प्रत्यक्ष तरीकों में तेजी से कर रहे हैं जब उपलब्ध।

>>> df = pd.DataFrame(np.random.randint(1, 10, (5, 3))) 
>>> df 
    0 1 2 
0 9 3 3 
1 8 5 4 
2 3 6 7 
3 9 8 5 
4 7 1 2 
>>> df.apply(np.prod, axis=1) 
0  81 
1 160 
2 126 
3 360 
4  14 
dtype: int64 
संबंधित मुद्दे