python - Pandas Dataframe ValueError:系列的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
问题描述
我正在尝试向使用其他列创建到达行的“绿色分数”的数据框添加一个新列。在下面的示例中,我希望每辆“模型”汽车都有一个分数,以显示汽车的“绿色”程度。
我的数据(简化):
cars = {'Model': ['Honda Civic','Toyota Corolla','Smart Car','Tesla'],
'Green Fuel': [False, False, True, True],
'Energy Use': ['High','Medium','Low','Low'],
}
df = pd.DataFrame(cars, columns = ['Model', 'Green Fuel', 'Energy Use'])
df['Green Score'] = 0
打印汽车数据框:
Model Green Fuel Energy Use Green Score
0 Honda Civic False High 0
1 Toyota Corolla False Medium 0
2 Smart Car True Low 0
3 Tesla True Low 0
现在,要计算Green Scores
每个模型的,我正在尝试这个:
for car in df['Model']:
if df['Green Fuel'] == True:
df['Green Score'] += 1
else:
pass
但是,当我运行它时,我得到了错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有人可以指出我如何解决这个错误的正确方向吗?
解决方案
首先最好是忘记for
在熊猫中使用循环,如果存在一些矢量化方法 - 例如,这里可以将布尔值转换为整数并与映射另一列求和(只是我的想法,我尝试有创意;)):
d = {'High':1,'Medium':2,'Low':3}
df['Green Score'] = df['Green Fuel'].astype(int) + df['Energy Use'].map(d)
print (df)
Model Green Fuel Energy Use Green Score
0 Honda Civic False High 1
1 Toyota Corolla False Medium 2
2 Smart Car True Low 4
3 Tesla True Low 4
推荐阅读
- microservices - 功能区在 WebLogic 12c 上给出 404 响应
- css - 使用输入水平内联图像
- ios - 要在图像集中上传哪 3 张尺寸/分辨率的图像以支持所有设备?
- typo3 - 用 php 创建许多新页面的最佳方法
- php - prestashop 模块控制器中的“找不到页面”
- javascript - 从 API 响应中获取数据并显示在表格中
- reactjs - 从子页面重定向时不想刷新网页中的父页面
- image - TensorFlow 2.0 和图像处理
- python - 在 url 中使用 id 进行分页,而不是 od "?page="
- hadoop - HIVE 加载数据路径