अन्य कॉलम में मूल्य के आधार पर अजगर 3 (पांडा) डेटाफ्रेम में नया कॉलम बनाएं
मेरे पास एक पांडा डेटाफ़्रेम है जहां मुझे डेटाफ़्रेम में अन्य कॉलमों के मूल्यों के आधार पर नए कॉलम बनाने की आवश्यकता है। यहाँ डेटाफ़्रेम है
व्यक्ति शहर राज्य देश
एक शिकागो इलिनोइस यूएसए
B फीनिक्स एरिजोना यूएसए
सी सैन डिएगो कैलिफोर्निया यूएसए
मैं राज्य में मूल्यों के आधार पर दो नए कॉलम बनाना चाहता हूं
- नया कॉलम df बनाएं ["शहर-उत्तर"] = df ['शहर'] जहां राज्य = "इलिनोइस"
- नया कॉलम df बनाएं ["शहर-दक्षिण"] = df ['शहर'] जहां राज्य "इलिनोइस" के बराबर नहीं है
मैंने कोशिश की
df.loc[((df['state'] == 'Illinois')), 'city-north'] = df['city']
df.loc[((df['state'] != 'Illinois')), 'city-south'] = df['city']
लेकिन कोड की दूसरी पंक्ति जहां स्थिति के बराबर नहीं है वहां 'शहर-दक्षिण' कॉलम नहीं बनता है। कृपया सहायता कीजिए
जवाब
1 jezrael
मेरे लिए अच्छी तरह से काम करना, अगर कोई मैच की स्थिति के लापता मान नहीं बनाए जाते हैं:
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