python - 如何将数据帧的列值转换为另一个数据帧列的值

标签 python python-3.x pandas

如何向 orig_diff 添加“main_category”列,该列将指示子类别属于哪个主类别。例如,值为“电影”的 orig_df 必须将“main_category”设置为“娱乐”,将“数学”设置为“教育”。

import pandas as pd
import numpy as np

orig_df = pd.DataFrame({"sub_cat" : ["Movie", "Science", "Maths", "Music", "Songs", "Dance", "English", "Maths", "Songs"], "Student": ["Stud1", "Stud2", "Stud3", "Stud4", "Stud5", "Stud6", "Stud7", "Sud8", "Stud9"]})
sub_df = pd.DataFrame({"Education": [0,1,1,0,0,0,1], "Entertainment": [1,0,0,1,1,1,0]}, index=["Movie", "Science", "Maths", "Music", "Songs", "Dance", "English"])
print(orig_df)
print(sub_df)

最佳答案

一种方法是通过迭代行从 sub_df 创建字典。

然后在orig_df['sub_cat']上使用字典作为 map :

d = {idx: next(k for k in sub_df if row[k]==1)
     for idx, row in sub_df.iterrows()}

orig_df['main_category'] = orig_df['sub_cat'].map(d)

print(orig_df)

  Student  sub_cat  main_category
0   Stud1    Movie  Entertainment
1   Stud2  Science      Education
2   Stud3    Maths      Education
3   Stud4    Music  Entertainment
4   Stud5    Songs  Entertainment
5   Stud6    Dance  Entertainment
6   Stud7  English      Education
7    Sud8    Maths      Education
8   Stud9    Songs  Entertainment

请注意,这假设每个 sub_cat 仅映射到“教育”或“娱乐”之一。

关于python - 如何将数据帧的列值转换为另一个数据帧列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50171128/

相关文章:

python - difflib 输出很奇怪,在每个字符上添加了额外的空格

python - Python MySQL 连接器中的变量在函数中不起作用

python - 循环多维数组并根据条件进行过滤

python - 导入错误 : No module named 'pandas.indexes'

Python 中 pandas 的时差

python - 如何比较两个集合,其中每个元素都是列表?

python - zipfile 模块给出不可靠的结果

python - 如何从peewee获取sql查询?

python - 如何在Python 3.5中选择小数点后的第一个数字?

python - 在 Linux 上执行时 Xlsxwriter header 格式不出现