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

  1. Buat kolom baru df ["city-north"] = df ['city'] di mana state = "Illinois"
  2. 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