कैसे प्राप्त करने के लिए आइटम की गणना पंक्तियों में के रूप में अच्छी तरह के रूप में एक आइटम मौजूद है या नहीं, और अंत में रखने के लिए पहली पंक्ति में अजगर?

0

सवाल

मान लीजिए कि मैं एक डेटा फ्रेम के रूप में निम्नानुसार:

 df = pd.DataFrame({
        'Column A': [12,12,12, 13, 15, 16, 141, 141, 141, 141],
         'Column B':['Apple' ,'Apple' ,'Orange' ,'Apple' , np.nan, 'Orange', 'Apple', np.nan, 'Apple', 'Apple']}) 

इन शर्तों पर आधारित:

  • अगर मान स्तंभ में एक दोहराया जाता है तो गिनती के शब्द 'ऑरेंज' में स्तंभ B और पेस्ट में यह नया स्तंभ C(उदाहरण के लिए, वहाँ रहे हैं 3 पंक्तियों के लिए 12, गिनती के 'ऑरेंज' 1 है, और यह 1 में होना चाहिए नए स्तंभ C). गैर के लिए-दोहराने पंक्तियों, सिर्फ पेस्ट इसी मूल्यों.

  • अगर मान स्तंभ में एक दोहराया जाता है तो गिनती के शब्द 'एप्पल' में स्तंभ B और पेस्ट में यह नया स्तंभ D(उदाहरण के लिए, वहाँ रहे हैं 3 पंक्तियों के लिए 12, गिनती की 'एप्पल' 2 है, और इस 2 में होना चाहिए नए स्तंभ D). गैर के लिए-दोहराने पंक्तियों, सिर्फ पेस्ट इसी मूल्यों.

  • के लिए दोहराया और गैर-दोहराया पंक्तियों के कारण एक स्तंभ है, अगर शब्द 'ऑरेंज' में मौजूद है स्तंभ B लिखने के लिए, 'हाँ' और 'नहीं' में स्तंभ ई.

मैं होगा की तरह है करने के लिए एक आउटपुट निम्न है । मैं कोशिश कर रहा था अजगर में jupyter नोटबुक कर सकते हैं, किसी कृपया मेरी मदद प्राप्त करने के लिए एक उत्पादन में इस तरह:

      | Column A | Column B |Column C |Column D |Column E 
----- | -------- | ---------|---------|---------|---------
 0    | 12       | Apple    |1        |2        |Yes   
 1    | 13       | Apple    |0        |1        |No 
 2    | 15       | NaN      |NaN      |NaN      |NaN     
 3    | 16       | Orange   |1        |0        |Yes      
 4    | 141      | Apple    |0        |3        |No   

अग्रिम धन्यवाद:)

1

सबसे अच्छा जवाब

2

मुझे लगता है कि वहाँ कोई शक्तिशाली और सरल समाधान के लिए अपने सवाल है, लेकिन निम्न कोड का उपयोग करें.

सबसे पहले, एक समारोह को परिभाषित count(x, a) जो रिटर्न nan यदि x शामिल हैं nanकी संख्या की घटना में एक x है, अन्यथा. समारोह में इस्तेमाल किया जाएगा के लिए लागू होते हैं समारोह.

फिर, का उपयोग groupby और लागू करें सूची समारोह ।

temp = df.copy().groupby('Column A')['Column B'].apply(list)

उसके बाद, अस्थायी हो जाता है

Column A
12         [Apple, Apple, Orange]
13                        [Apple]
15                          [nan]
16                       [Orange]
141    [Apple, nan, Apple, Apple]
Name: Column B, dtype: object

तो, के आधार पर अस्थायी है, हम कर सकते हैं की संख्या की गिनती सेब और संतरे.

के बाद से df है डुप्लिकेट, मैं उन्हें हटा दिया है और नए जोड़ने स्तंभ (स्तंभ C, D, और E).

df.drop_duplicates(subset = ['Column A'], keep = "first", inplace = True)
df['Column C'] = temp.apply(count, a = "Orange").values
df['Column D'] = temp.apply(count, a = "Apple").values
df['Column E'] = df['Column D'].apply(lambda x:1 if x>=1 else 0)

संपादित करें

मैं माफी चाहता हूँ. मुझे याद समारोह गिनती..

def count(x, a):
    if type(x[0]) == float:
        return np.nan
    else:
        return x.count(a)
2021-11-11 12:31:49

अब मैं हो रही हूँ के रूप में उत्पादन नीचे और जो सही है । 0 1.0 3 0.0 4 नेन 5 1.0 6 0.0 क्या यह संभव है बदलने के लिए बाईं ओर संख्या 0 3 4 5 6 की गिनती करने के लिए मान 0 1 2 3 4 5?
new_bee

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में