Buat kolom baru di dataframe python 3 (pandas) berdasarkan nilai di kolom lain
Aug 16 2020
Saya memiliki pandas dataframe di mana saya perlu membuat kolom baru berdasarkan nilai dari kolom lain di dataframe. Berikut adalah dataframe
orang kota negara bagian negara
Chicago Illinois AS
B Phoenix Arizona AS
C San Diego California AS
Saya ingin membuat dua kolom baru berdasarkan nilai di negara bagian
- Buat kolom baru df ["city-north"] = df ['city'] di mana state = "Illinois"
- Buat kolom baru df ["city-south"] = df ['city'] di mana negara bagian tidak sama dengan "Illinois"
Saya mencoba
df.loc[((df['state'] == 'Illinois')), 'city-north'] = df['city']
df.loc[((df['state'] != 'Illinois')), 'city-south'] = df['city']
Tetapi baris kedua kode dimana tidak sama dengan kondisi tidak membuat kolom 'kota-selatan'. Tolong bantu
Jawaban
1 jezrael Aug 16 2020 at 13:10
Bagi saya bekerja dengan baik, jika tidak ada kondisi yang cocok dibuat nilai yang hilang:
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
Jika perlu string nilai kosong untuk baris yang tidak cocok:
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