python - 如何在熊猫中映射列值?
问题描述
在我的文件中,一列包含不同的成绩(列名='成绩)。
例如:91 50K、92 60K、DIESEL、ADBlU 等。
对于所有这些等级,我需要将它们分类为几个等级;
例如: 91 50K= Petrol
在我的 python 中,我该怎么做?请注意,我可以将整列传递给函数。但是函数必须用正确的值重写每一行的值;
def checkgrades(data):
df['Grades']=???
???
根据以下答案,我尝试;
df_dips=map_dips_grades(df_dips)
df_sales = df_sales.merge(df_dips, left_on=['Site Name', 'Date','GradeNo'],
right_on=['Site', 'Dip Time', 'Product'], how='left').fillna(0)
def map_dips_grades(data):
d1 = {'Diesel': ['DIESEL', 'DIESEL 1'],
'Unleaded': ['91','91 UNLEADED'],
'PULP':['95','95 ULP'],
'PULP98':['98','98 20K'],
'Vortex Diesel':['DIESEL ULT R'],
'Adblue':['ADBLU','ADO']}
d = {k: oldk for oldk, oldv in d1.items() for k in oldv}
data['Product'].map(d)
return data
但我明白了;
ValueError: You are trying to merge on int64 and object columns. If you wish to proceed you should use pd.concat
解决方案
您可以尝试将字典与 map() 函数一起使用。像这样的东西:
dict = {'91 50K': 'Petrol', .........}
df['Grades'] = df['Grades'].map(dict)
推荐阅读
- python - 试图将大 tsv 文件转换为 json
- r - facet_wrap 面板不显示在 facet_wrap 变量的级别序列中
- python - 如何以张量的形式从张量流或 Keras 中的混淆矩阵中获得准确性?
- dialogflow-es - 无服务器:您的 serverless.yml 的键值无效:“Ref”
- reactjs - 如何自动检查每个状态值并设置状态
- java - JDK 会自动为自定义注解生成代理类吗?
- terraform - 如果未提供其值,则有条件地忽略 Terraform 中的参数?
- java - 方法签名是什么意思?字符串值()默认“”;
- asp.net-mvc - 如何在 Asp.net 核心 MVC 应用程序中查看 Account 和 Auth 控制器
- javascript - 如何在 v-for 中绑定图像