dataframe - 如何在 Dataframe 中根据 if 语句插入一行
问题描述
我有一个数据框 df,我想要 df1(都如下所示)。对于每个 ID 值,我希望代表两种饮料类型(啤酒和葡萄酒)。如果任何 ID 值没有这些,他们会将缺少的饮料类型和“未说明”插入“饮料”列。
df:
ID DrinkType Drink
130 Beer Fosters
130 Wine Rose
130 Beer Budweiser
102 Beer Fosters
120 Wine Pinot Grigot
120 Beer Budweiser
99 Wine Coke
75 Beer Carling
75 Beer Fosters
df1:
ID DrinkType Drink
130 Beer Fosters
130 Wine Rose
130 Beer Budweiser
102 Beer Fosters
102 Wine Not Stated
120 Wine Pinot Grigot
120 Beer Budweiser
99 Wine Coke
99 Beer Not Stated
75 Beer Carling
75 Beer Fosters
75 Wine Not Stated
解决方案
我认为这是您需要的溶胶
import pandas as pd
df=pd.DataFrame({'Id':[130,130,130,102,120,120,99,75,75],'DrinkType':
['Beer','Wine','Beer','Beer','Wine','Beer','Wine','Beer','Beer'],'Drink':
['Fosters','Rose','Budweiser','Fosters','PinotGrigot','Budweiser','Coke','Carling','Fosters']})
diff=df['Id'].unique()
print(diff)
all_cate={'Beer','Wine'}
for i in diff:
inte=all_cate.intersection(set(df.loc[df['Id']==i,'DrinkType'].unique()))
for j in all_cate:
if(j not in inte):
print((i,j,'NotStated'))
df=pd.concat([df,pd.DataFrame({'Id':[i],'DrinkType':[j],'Drink':
['NotStated']})])
df=df.reset_index(drop=True)
推荐阅读
- c# - 在实体框架中使用lambra表达式优化查询
- html - 具有百里香属性的条件内联格式
- cocoa - 替换项目时 NSOutlineView reloadItem/reloadData 不起作用
- vue-component - nuxt 组件:计算与数据
- java - web.xml - 动态而不是硬编码 - 有可能吗?
- c++ - cin 语句在循环的第三次迭代中被跳过
- python - Tkinter:使用多个实例撤回 Tkinter 根窗口的正确方法
- kubernetes - 向现有部署 kubernetes 添加新端口
- javascript - 使用 Jest 假计时器进行所有测试
- node.js - Socket.io:socket.adapter.rooms 对象中的“真”是什么意思?