अन्य कॉलम में मूल्य के आधार पर अजगर 3 (पांडा) डेटाफ्रेम में नया कॉलम बनाएं

Aug 16 2020

मेरे पास एक पांडा डेटाफ़्रेम है जहां मुझे डेटाफ़्रेम में अन्य कॉलमों के मूल्यों के आधार पर नए कॉलम बनाने की आवश्यकता है। यहाँ डेटाफ़्रेम है

व्यक्ति शहर राज्य देश

एक शिकागो इलिनोइस यूएसए

B फीनिक्स एरिजोना यूएसए

सी सैन डिएगो कैलिफोर्निया यूएसए

मैं राज्य में मूल्यों के आधार पर दो नए कॉलम बनाना चाहता हूं

  1. नया कॉलम df बनाएं ["शहर-उत्तर"] = df ['शहर'] जहां राज्य = "इलिनोइस"
  2. नया कॉलम df बनाएं ["शहर-दक्षिण"] = df ['शहर'] जहां राज्य "इलिनोइस" के बराबर नहीं है

मैंने कोशिश की

df.loc[((df['state'] == 'Illinois')), 'city-north'] = df['city']

df.loc[((df['state'] != 'Illinois')), 'city-south'] = df['city']

लेकिन कोड की दूसरी पंक्ति जहां स्थिति के बराबर नहीं है वहां 'शहर-दक्षिण' कॉलम नहीं बनता है। कृपया सहायता कीजिए

जवाब

1 jezrael Aug 16 2020 at 13:10

मेरे लिए अच्छी तरह से काम करना, अगर कोई मैच की स्थिति के लापता मान नहीं बनाए जाते हैं:

df.loc[df['state'] == 'Illinois', 'city-north'] = df['city']
df.loc[df['state'] != 'Illinois', 'city-south'] = df['city']

print (df)
  person       city       state country city-north city-south
0      A    Chicago    Illinois     USA    Chicago        NaN
1      B    Phoenix     Arizona     USA        NaN    Phoenix
2      C  San Diego  California     USA        NaN  San Diego

यदि मिलान न की गई पंक्तियों के लिए रिक्त मानों की आवश्यकता है:

df['city-north'] = np.where(df['state'] == 'Illinois', df['city'], '')
df['city-south'] = np.where(df['state'] != 'Illinois', df['city'], '')

print (df)
  person       city       state country city-north city-south
0      A    Chicago    Illinois     USA    Chicago           
1      B    Phoenix     Arizona     USA               Phoenix
2      C  San Diego  California     USA             San Diego