python - 从其他两列在 Pandas 数据框中创建新列时出错
问题描述
我有以下(玩具)数据集:
import pandas as pd
import numpy as np
df = pd.DataFrame({'Manufacturer':['Allen Edmonds', 'Louis Vuitton 23', 'Louis Vuitton 8', 'Gulfstream', 'Bombardier', '23 - Louis Vuitton', 'Louis Vuitton 20'],
'System':['None', 'None', '14 Platinum', 'Gold', 'None', 'Platinum 905', 'None']
})
接下来,我创建一个Manufacturer
基于两个现有列命名的列:
df.loc[(df['Manufacturer'].str.contains('Louis')) &
(df['System'].str.contains('Platinum')),
'Pricing'] = 'East Coast'
在玩具数据集上,这种方法按预期工作。但是,在生产数据(很遗憾,我无法共享)上,我看到以下错误消息:
KeyError: "None of [Float64Index([nan, nan, nan, nan, nan, nan...], \n dtype='float64', length=583)] are in the [index]"
起初,我认为错误可能是由列标题中的空格引起的。但是,看起来情况并非如此。
列标题分配如下:
for elem in elements:
d = {
'Manufacturer' : issue.fields.manufacturer,
'System' : issue.fields.system
}
(数据来自数据库)
知道什么可能导致此关键错误吗?
也许我需要使用以下改编:
df['Pricing'] = np.where(df['Manufacturer'].str.contains('Louis'), 'East Coast', 'None')
但是,我不确定如何使用np.where
两个条件...(请参阅如何根据我的原始问题的一个或多个 OTHER 列的条件子字符串搜索在 Pandas 数据框中创建列)。
提前致谢!
解决方案
没有数据就很难理解错误。
您可以通过以下方式在 2 个条件下尝试 np.where:
df['Pricing']=np.where((df['Manufacturer'].str.contains('Louis') & df['System'].str.contains('Platinum')), 'East Coast', None)
推荐阅读
- react-native - 如何在 react-native 中输入文本输入时获得建议
- java - Kotlin 中运行时 Json 处理程序包装器的实际类类型
- django - 是否有允许管理员按字段值对模型对象进行排序的 django 管理小部件?
- c++ - 为什么变量和函数不能同名?
- python - 如何检查字符串是否包含字符和空格(空字符)?
- reactjs - 通过 React useEffect 方法对数组中的 obj 进行排序
- .net - WebView2 中的搜索功能
- css - 使用 div 创建的按钮的形状边框
- c++ - 调用基类变量的分段错误
- python - Python 3 如何从导出商和余数返回单独的列表