Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过哈希映射基于其他列设置或替换数据帧列中的值_Python_Pandas - Fatal编程技术网

Python 通过哈希映射基于其他列设置或替换数据帧列中的值

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中,我想添加列

我需要通过散列映射,基于其他列设置数据帧中某列的值。我无法通过现有的答案让它工作。希望有人能帮助我

我有一个带有一些列的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]中: