Python 3.x 基于其他列中的值在Python3(熊猫)数据帧中创建新列
我有一个pandas dataframe,需要根据dataframe中其他列的值创建新列。这是数据帧 个人城市国家 美国伊利诺伊州芝加哥 美国亚利桑那州凤凰城B酒店 C美国加利福尼亚州圣地亚哥 我想根据state中的值创建两个新列Python 3.x 基于其他列中的值在Python3(熊猫)数据帧中创建新列,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有一个pandas dataframe,需要根据dataframe中其他列的值创建新列。这是数据帧 个人城市国家 美国伊利诺伊州芝加哥 美国亚利桑那州凤凰城B酒店 C美国加利福尼亚州圣地亚哥 我想根据state中的值创建两个新列 创建新列df[“城北”]=df[“城市”]其中state=“伊利诺伊” 创建新列df[“城市南部”]=df[“城市”],其中州不等于“伊利诺伊州” 我试过了 df.loc[((df['state'] == 'Illinois')), 'city-north'] = d
df.loc[((df['state'] == 'Illinois')), 'city-north'] = df['city']
df.loc[((df['state'] != 'Illinois')), 'city-south'] = df['city']
但第二行代码中不等于条件的部分不会创建“city south”列。如果没有创建匹配条件或缺少值,请帮助我正常工作:
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