DataFrame में प्रत्येक सेल पर फ़ंक्शन लागू करें


87

मेरे पास एक डेटाफ्रेम है जो इस तरह दिख सकता है:

A        B        C
foo      bar      foo bar
bar foo  foo      bar

मैं प्रत्येक पंक्ति के प्रत्येक तत्व (या प्रत्येक स्तंभ के प्रत्येक तत्व) को देखना चाहता हूं और बाद के DF को प्राप्त करने के लिए निम्नलिखित फ़ंक्शन लागू करता हूं:

def foo_bar(x):
    return x.replace('foo', 'wow')

A        B        C
wow      bar      wow bar
bar wow  wow      bar

क्या एक साधारण एक-लाइनर है जो प्रत्येक सेल में एक फ़ंक्शन लागू कर सकता है?

यह एक सरलीकृत उदाहरण है, इसलिए फ़ंक्शन को लागू करने के अलावा इस विशिष्ट उदाहरण को निष्पादित करने का एक आसान तरीका हो सकता है, लेकिन मैं वास्तव में क्या पूछ रहा हूं कि डेटाफ़्रेम के भीतर प्रत्येक सेल में फ़ंक्शन कैसे लागू किया जाए।


9
मुझे नहीं लगता कि प्रश्नों को पूरी तरह से एक नए में संपादित करना एक अच्छा विचार है, एक बार जब आप पहले से ही पुराने के उत्तर पा चुके होते हैं क्योंकि यह इसके पहले के उत्तरों को अमान्य कर देगा। मैं आपसे अनुरोध करूंगा कि आप मूल प्रश्न को वापस लें और नए को अलग से पूछें।
निकिल मावेली

जवाबों:


119

आप उपयोग कर सकते हैं applymap()जो आपके मामले के लिए संक्षिप्त है।

df.applymap(foo_bar)

#     A       B       C
#0  wow     bar wow bar
#1  bar wow wow     bar

एक अन्य विकल्प यह है कि आप अपने फ़ंक्शन को वेक्टर करें और फिर applyविधि का उपयोग करें :

import numpy as np
df.apply(np.vectorize(foo_bar))
#     A       B       C
#0  wow     bar wow bar
#1  bar wow wow     bar

हाय माफ करना, सवाल एक फंक्शन को लागू करने के बारे में था और वास्तव में यह पता लगाने के बारे में नहीं था कि कौन सी सेल है। मुझे देखने दें कि क्या मैं उदाहरण को स्पष्ट करने के लिए बदल सकता
हूं

1
यदि आप एक समारोह लागू करने के लिए देख रहे हैं, तो आप कर सकते हैंimport numpy as np; df.apply(np.vectorize(iseven))
Psidom

2
@ eljusticiero67 आप उपयोग कर सकते हैं df.applymap(iseven)लेकिन ध्यान दें कि यह बड़े DataFrames के लिए वास्तव में धीमा हो जाएगा इसलिए जब भी आपको मौका मिले, वेक्टर किए गए तरीकों का उपयोग करें।
अहान

@ayhan - आपका तरीका काम करने लगता है, दोनों np.vectorize और बिना। क्या आप जवाब पोस्ट करने का मन करेंगे तो मैं आपको इसका श्रेय दे सकता हूं?
eljusticiero67

1
मैंने वास्तव में इसे पहली बार पोस्ट नहीं किया था क्योंकि मैं इसे लिंक करने के लिए एक डुप्लिकेट खोजने की कोशिश कर रहा था। मुझे एक सटीक डुप्लिकेट नहीं मिला, लेकिन शायद यह एक है ? निकिल मेवेली हालांकि सही है, आप अर्थ स्पष्ट कर सकते हैं लेकिन कम से कम उदाहरण वही होना चाहिए जो मुझे लगता है। हो सकता है कि Psidom अपने सुझाव को applymap के साथ शामिल करने के लिए संपादित कर सकता है?
अहान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.