Python pandas - 如果项目在列表中,则为新列的值

Posted

技术标签:

【中文标题】Python pandas - 如果项目在列表中,则为新列的值【英文标题】:Python pandas - new column's value if the item is in the list 【发布时间】:2017-12-24 08:53:28 【问题描述】:

我想在 pandas 数据框中创建一个新列。第一列包含国家名称。该列表包含我感兴趣的国家(例如欧盟)。新列应指示数据框中的国家/地区是否在列表中。

以下是代码的缩短版:

import pandas as pd
import numpy as np

EU = ["Austria","Belgium","Germany"]

df1 = pd.DataFrame(data="Country":["USA","Germany","Russia","Poland"], "Capital":["Washington","Berlin","Moscow","Warsaw"])

df1["EU"] = np.where(df1["Country"] in EU, "EU", "Other")

我得到的错误是:

ValueError:Series 的真值不明确。使用a.empty, a.bool()、a.item()、a.any() 或 a.all()。

我不知道问题是什么以及如何解决它。我错过了什么?

【问题讨论】:

【参考方案1】:

使用isin 检查会员资格:

df1["EU"] = np.where(df1["Country"].isin(EU), "EU", "Other")
print (df1)
      Capital  Country     EU
0  Washington      USA  Other
1      Berlin  Germany     EU
2      Moscow   Russia  Other
3      Warsaw   Poland     EU

【讨论】:

以上是关于Python pandas - 如果项目在列表中,则为新列的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python 中使用 pandas 获取所有重复项的列表?

扁平化(不规则)Python 中关于 Pandas Dataframes 的列表列表

限制 Pandas 数据框中显示的最大列数 [重复]

Python Pandas Dataframe:如何同时将多个索引附加到列表中?

在 python 中使用 pandas 从文本文件创建列表

在 python/pandas 中有效地压缩多个列表