मैं एक संपूर्ण कॉलम को पॉप्युलेट करने के लिए np.where() फ़ंक्शन का मान प्राप्त करने का प्रयास कर रहा हूं, लेकिन कुछ मुद्दों में चल रहा हूं। मेरे पास दो टेबल हैं, एक लुकअप टेबल जिसमें दो कॉलम हैं, "चोट टाइप", और "आईडी" जहां चोट टाइप एक स्ट्रिंग है और आईडी एक int है। दूसरी तालिका एक नई तालिका है जिसे मैं पहली तालिका से आईडी को पकड़ने की कोशिश कर रहा हूं, लेकिन यह पूरे कॉलम के लिए समान होना चाहिए।

    #LookupTable 
    Id  InjuryType
    1   acute_Shoulder
    2   chronic_Shoulder
    3   acute_Ankle
    4   chronic_Ankle


   #The table that I want to create (new)
   Id   Description
   4    a
   4    b
   4    foo
   4    bar

मैं नए डीएफ के आईडी कॉलम से जूझ रहा हूं। मैंने बिना किसी लाभ के आईडी कॉलम को पॉप्युलेट करने के लिए np.where() फ़ंक्शन की सामग्री निकालने का प्रयास किया है।

 #Try setting id to Id from LookupTable where InjuryType is chronic_Ankle, essentially new['Id'] = 4
 new['Id'] = np.where(lookup['InjuryType'] == 'chronic_Ankle',lookup['Id'],'NULL')
 
 #Also tired setting the the function to a value.
 i = np.where(lookup['InjuryType'] == 'chronic_Ankle',lookup['Id'],'NULL')
 i = [i for i in i != 'NULL']  #returns ['4'], but will get index error if I try setting it to this

शुक्रिया!

0
romeo 27 सितंबर 2020, 19:41

1 उत्तर

सबसे बढ़िया उत्तर

संभावित समाधानों में से एक:

new_df = pd.DataFrame({
    'Id': lookup[lookup.InjuryType == 'chronic_Ankle'].Id.item(),
    'Description': ['a', 'b', 'foo', 'bar']})

परिणाम है:

   Id Description
0   4           a
1   4           b
2   4         foo
3   4         bar

एक अन्य विकल्प:

new_df = pd.DataFrame({
    'Id': lookup.set_index('InjuryType').loc['chronic_Ankle', 'Id'],
    'Description': ['a', 'b', 'foo', 'bar']})
0
Valdi_Bo 27 सितंबर 2020, 20:02