我不确定用文字来描述这一点的最佳方式是什么,所以一张图片胜过一千个单词(在这种情况下,一个例子胜过一千个单词:) 我把这个表作为Pandas Dataframe放在了Python上

id Math Physics Morning Class Night Class
1 math100 phys300 [Math] [Physics]
2 math500 phys250A [Physics] [Math]

我try 使用"Morning Class"和"Night Class"字段中的值来查看要查看的列并从中提取数据,并在此基础上将"Morning Class"和"Night Class"列值替换为来自"Math"和"物理"字段的映射值.这是最终的表格应该是什么样子

id Math Physics Morning Class Night Class
1 math100 phys300 math100 phys300
2 math500 phys250A phys250A math500

我想使用Python来实现这一点,我能够在SQL上做到这一点,我觉得这是一个简单的Python问题,但我似乎就是无法用Python解决它,当我试图在线查找时,我找不到任何描述和回答我问题的帖子,如果已经有的话,请随时向我推荐它.谢谢!

推荐答案

两列均使用indexing lookup:

cols1 = ['Morning Class','Night Class']

def f(x):
    #if string columns
    idx, cols = pd.factorize(x.str.strip('[]'))
    #if one element list columns
    #idx, cols = pd.factorize(x.str[0])
    return df.reindex(cols, axis=1).to_numpy()[np.arange(len(df)), idx]

df[cols1] = df[cols1].apply(f)
print (df)
   id     Math   Physics Morning Class Night Class
0   1  math100   phys300       math100     phys300
1   2  math500  phys250A      phys250A     math500

Python相关问答推荐

三个给定的坐标可以是矩形的点吗

当多个值具有相同模式时返回空

类型错误:输入类型不支持ufuncisnan-在执行Mann-Whitney U测试时[SOLVED]

聚合具有重复元素的Python字典列表,并添加具有重复元素数量的新键

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

在Python中动态计算范围

Stacked bar chart from billrame

转换为浮点,pandas字符串列,混合千和十进制分隔符

Flash只从html表单中获取一个值

当单元测试失败时,是否有一个惯例会抛出许多类似的错误消息?

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量

在用于Python的Bokeh包中设置按钮的样式

根据Pandas中带条件的两个列的值创建新列

当HTTP 201响应包含 Big Data 的POST请求时,应该是什么?  

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

裁剪数字.nd数组引发-ValueError:无法将空图像写入JPEG

高效生成累积式三角矩阵

python3中np. divide(x,y)和x/y有什么区别?'

对包含JSON列的DataFrame进行分组

Pandas查找给定时间戳之前的最后一个值