Tạo cột mới trong khung dữ liệu python 3 (gấu trúc) dựa trên giá trị trong cột khác
Aug 16 2020
Tôi có khung dữ liệu gấu trúc nơi tôi cần tạo các cột mới dựa trên các giá trị từ các cột khác trong khung dữ liệu. Đây là khung dữ liệu
người thành phố quốc gia
A Chicago Illinois Hoa Kỳ
B Phoenix Arizona Hoa Kỳ
C San Diego California Hoa Kỳ
Tôi muốn tạo hai cột mới dựa trên các giá trị ở trạng thái
- Tạo cột mới df ["city-north"] = df ['city'] where state = "Illinois"
- Tạo cột mới df ["city-south"] = df ['city'] trong đó tiểu bang không bằng "Illinois"
Tôi đã cố gắng
df.loc[((df['state'] == 'Illinois')), 'city-north'] = df['city']
df.loc[((df['state'] != 'Illinois')), 'city-south'] = df['city']
Nhưng dòng mã thứ hai không bằng điều kiện sẽ không tạo cột 'thành phố-phía nam'. Hãy giúp tôi
Trả lời
1 jezrael Aug 16 2020 at 13:10
Đối với tôi hoạt động tốt, nếu không có điều kiện khớp nào được tạo ra thì các giá trị bị thiếu:
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
Nếu cần các chuỗi giá trị trống cho các hàng không khớp:
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