【发布时间】:2019-01-26 02:45:03
【问题描述】:
我想在 pandas DataFrame 中创建一个新列。名为"Region" 的新列将指示列"City name" 中的值所属的区域。
我有三个列表,分别对应三个不同的区域:北部、南部和西部。每个地区都包含不同的国家/地区字符串。
我该怎么做?我找到了this example,但它只与属于一个且只有一个列表的项目有关。就我而言,项目可以属于三个列表之一。
这是我的尝试:
df["Region"] = pd.np.where(df["City name"].isin(N), "North", "")
df["Region"] = pd.np.where(df["City name"].isin(S), "South", "")
df["Region"] = pd.np.where(df["City name"].isin(W), "West", "")
我的问题是第二行覆盖了第一行,以此类推。
【问题讨论】:
-
可能想要
np.select你能发布一个带有所需输出的数据框的小样本吗?但是,您也可以将空字符串替换为df['Region'],这不会覆盖任何内容(但 select 更好) -
什么是 N、S、W?你能提供一个minimal reproducible example吗?