python - 分配一个新列以将值项目分类到
问题描述
我使用从 excel 导入数据框
data = pd.read_csv('transaction.csv')
并有一个看起来像这样的数据框
Date Time Transaction Item
0 2016-10-30 09:58:11 1 water
1 2016-10-30 10:05:34 2 french fries
2 2016-10-30 10:05:34 2 Icecream
3 2016-10-30 10:07:57 3 chocolate
4 2016-10-30 10:07:57 3 Cookies
我创建了一个字典,将每个项目分配给一个食物或饮料类别,如下所示:
Food = ('french fries', 'Icecream', 'chocolate', 'Cookies')
Drink = ('water')
Category = {Food : "Food", Drink : "Drink"}
我想将类别分配给另一列,但它显示为 NaN。我使用了这段代码:
data['Classification'] = data['Item'].map(Category)
Date Time Transaction Item Food or Drink
0 2016-10-30 09:58:11 1 water NaN
1 2016-10-30 10:05:34 2 french fries NaN
2 2016-10-30 10:05:34 2 icecream NaN
3 2016-10-30 10:07:57 3 chocolate NaN
4 2016-10-30 10:07:57 3 cookies NaN
解决此问题的最佳方法是什么?
解决方案
为每个类别创建字典dict.fromkeys
并将它们合并在一起:
Food = ('french fries', 'Icecream', 'chocolate', 'Cookies')
Drink = ('water',)
Category = {**dict.fromkeys(Food, "Food"), **dict.fromkeys(Drink, "Drink")}
print (Category)
{'french fries': 'Food', 'Icecream': 'Food',
'chocolate': 'Food', 'Cookies': 'Food', 'water': 'Drink'}
data['Classification'] = data['Item'].map(Category)
print (data)
Date Time Transaction Item Classification
0 2016-10-30 09:58:11 1 water Drink
1 2016-10-30 10:05:34 2 french fries Food
2 2016-10-30 10:05:34 2 Icecream Food
3 2016-10-30 10:07:57 3 chocolate Food
4 2016-10-30 10:07:57 3 Cookies Food
推荐阅读
- python - 如何改变熊猫的周期
- sql - 为什么我的 T-SQL 查询在不同的窗口中返回不同?
- javascript - 更改数据表单元格背景功能
- java - Java:Autowired.Value 在哪里寻找设置?
- c# - 当我有很多异步操作(以前的存储过程)时,使用 dbContext 的最佳方法是什么?
- visual-studio - WinForms“设置”设计器中的同步按钮正在错误的“Url”位置查找 user.config
- python - csv 文件在 pandas csv 中错误加载
- python - 越界纳秒时间戳:1-01-01 00:00:00
- vba - 使用 VBA 为整个演示文稿设置相同的字体类型
- python - Tkinter GUI 和绘图和线程