我不确定用文字描述这一点的最佳方式是什么,所以一张图片抵一千个字(在这种情况下,一个例子抵一千个字:)) 我在 Python 上有这个表作为 Pandas Dataframe
我正在尝试使用“上午类(class)”和“夜间类(class)”字段中的值来查看要查看的列并从中提取数据,并基于此我将替换“上午类(class)”和“夜间类(class)”列值与“数学”和“物理”字段中的映射值。这就是决赛 table 的样子
我想使用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/