python - 将字段映射到同一 pandas 数据框中的拉取值

标签 python python-3.x pandas dataframe

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

<表类=“s-表”> <标题> id 数学 物理 上午课 夜校 <正文> 1 数学100 phys300 [数学] [物理] 2 数学500 phys250A [物理] [数学]

我正在尝试使用“上午类(class)”和“夜间类(class)”字段中的值来查看要查看的列并从中提取数据,并基于此我将替换“上午类(class)”和“夜间类(class)”列值与“数学”和“物理”字段中的映射值。这就是决赛 table 的样子

<表类=“s-表”> <标题> id 数学 物理 上午课 夜校 <正文> 1 数学100 phys300 数学100 phys300 2 数学500 phys250A phys250A 数学500

我想使用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 - 将字段映射到同一 pandas 数据框中的拉取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73943025/

相关文章:

python - python 中的轨迹相交

python - 如何使用 anaconda3 获取 python3 的 opencv?

python - 使用正则表达式选择数据

python - UnicodeDecodeError 在对数据集进行词干处理时出现意外的数据结束

python - 在 python : using a list of file paths with the 'with' keyword

python按行中的最后一个字排序,不同长度的行

python-3.x - 通过 HTTP 请求的 Json 响应与网站上的不同

python - 使用正则表达式从以某些字符开头的列中删除子字符串

python - 从距离矩阵数据帧中查找最小值的成对标签

python - MongoEngine 改变数据库