gpt4 book ai didi

python - 将一列中的值与第二个数据框中一列中的值进行比较

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:19 25 4
gpt4 key购买 nike

我有 2 个 dataframes,每个 dataframe 都有一个 RegionName 列。如果 dataframe A 中的 RegionName 出现在 中的 RegionName 下,我想创建一个值为“true”的新列数据框 B.

我已经编写了一个 lambda 函数来尝试执行此操作,但对我的 dataframe 中的所有项目都返回 false(事实并非如此)。我也尝试过使用 np.where() 但无济于事

housing = convert_housing_data_to_quarters()
housing = housing.iloc[:,[34,35,36,37]]
university = get_list_of_university_towns()
housing = housing.reset_index()
housing['University City'] = housing.apply(lambda x: x['RegionName'] in university['RegionName'], axis=1)

这是我尝试使用 np.where()

housing['University City'] = np.where(housing['RegionName'] == university['RegionName'](axis=1),'true','false')

最佳答案

Pandas 系列具有类似字典的属性。请考虑以下事项:

s = pd.Series(['a', 'b', 'c', 'd'], index=[10, 11, 12, 13])

'a' in s # False
10 in s # True

因此,您实际上是在检查系列索引 而非系列 中是否存在。此外,apply + lambda 是一个低效的 Python 级循环。

对于 Pandas,您应该着眼于向量化操作,例如通过pd.Series.isin ,它隐含地使用值。此外,首先让您的比较系列独一无二可能会很有效:

unique_vals = university['RegionName'].unique()
housing['University City'] = housing['RegionName'].isin(unique_vals)

这将创建一个 bool 系列。如果 0/1 是一个要求,那么您可以转换为 int:

housing['University City'] = housing['University City'].astype(int)

关于python - 将一列中的值与第二个数据框中一列中的值进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53778500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com