Python 通过哈希映射基于其他列设置或替换数据帧列中的值
我需要通过散列映射,基于其他列设置数据帧中某列的值。我无法通过现有的答案让它工作。希望有人能帮助我 我有一个带有一些列的df。我想添加一个新列,其中的值基于其他一些现有列。该值将基于哈希映射进行设置 这是从数据帧创建的哈希映射;索引是一个元组:Python 通过哈希映射基于其他列设置或替换数据帧列中的值,python,pandas,Python,Pandas,我需要通过散列映射,基于其他列设置数据帧中某列的值。我无法通过现有的答案让它工作。希望有人能帮助我 我有一个带有一些列的df。我想添加一个新列,其中的值基于其他一些现有列。该值将基于哈希映射进行设置 这是从数据帧创建的哈希映射;索引是一个元组: material\u code\u map=dict([(a,b,c),i)表示拉链中的i,a,b,c(df.material, df.高度, df.Pole_级, df.治疗]) 然后,我有一个df,它包含列材质、高度、杆类等。 在df中,我想添加列
material\u code\u map=dict([(a,b,c),i)表示拉链中的i,a,b,c(df.material,
df.高度,
df.Pole_级,
df.治疗])
然后,我有一个df,它包含列材质、高度、杆类等。
在df中,我想添加列Material,其中Material是基于元组(Height、Pole_类、Treatment)从贴图派生的
以下测试代码不起作用:
cleaned=cleaned.assign(材料编号=λx:x.Pole\u等级+x.Pole\u长度)
已清理=已清理。分配(材料编号=λx:材料代码映射[(30,6,'PENTA'))
但是,这段代码似乎是显而易见的下一步,但它不起作用:
cleaned=cleaned.assign(材料编号=λx:材料代码映射[(x.Pole\u长度,x.Pole\u等级,'PENTA'))
我得到一个错误:
TypeError:“Series”对象是可变的,因此不能对它们进行散列
感谢您帮助我解决这个问题。我终于找到了解决方案,并在这里与大家分享,以防对像我这样的人有用。 我使用了一个更简单的代码来关注sintax。d是映射表(字典),df是包含A列和B列的表;列C通过映射d添加了基于A、B的值 [12]:d中的
Out[12]:{(1,1):1,(1,2):2,(1,3):3,(1,4):4}
In[13]:df
出[13]:
A B
0 1 2
1 11 22
2 1 3
3 1111 2222
在[14]中:df['C']=df[['A','B']].apply(元组,轴=1).map(d)
In[15]:df
出[15]:
A B C
0 1 2 2.0
11122南
2 1 3 3.0
3111222南
它也适用于字符串,正如我在本例中所需:
[23]:d中的
Out[23]:{(1,'a'):1,(1,'b'):2,(1,'c'):3,(1,'d'):4}
In[24]:df
出[24]:
A B
01 a
1 11 22
2 1 c
3 1111 2222
在[25]中:df['C']=df[['A','B']].apply(元组,轴=1).map(d)
In[26]:df
出[26]:
A、B、C
01A1.0
11122南
21C3.0
3111222南
在[27]中:
我终于找到了解决方案,并在这里与大家分享,以防对像我这样的人有用。
我使用了一个更简单的代码来关注sintax。d是映射表(字典),df是包含A列和B列的表;列C通过映射d添加了基于A、B的值
[12]:d中的
Out[12]:{(1,1):1,(1,2):2,(1,3):3,(1,4):4}
In[13]:df
出[13]:
A B
0 1 2
1 11 22
2 1 3
3 1111 2222
在[14]中:df['C']=df[['A','B']].apply(元组,轴=1).map(d)
In[15]:df
出[15]:
A、B、C
0 1 2 2.0
11122南
2 1 3 3.0
3111222南
它也适用于字符串,正如我在本例中所需:
[23]:d中的
Out[23]:{(1,'a'):1,(1,'b'):2,(1,'c'):3,(1,'d'):4}
In[24]:df
出[24]:
A B
01 a
1 11 22
2 1 c
3 1111 2222
在[25]中:df['C']=df[['A','B']].apply(元组,轴=1).map(d)
In[26]:df
出[26]:
A、B、C
01A1.0
11122南
21C3.0
3111222南
在[27]中: