Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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_Dataframe_Duplicates_Mapping - Fatal编程技术网

Python 如何将重复项映射到关键点,并将关键点映射到数据帧中的重复项?

Python 如何将重复项映射到关键点,并将关键点映射到数据帧中的重复项?,python,pandas,dataframe,duplicates,mapping,Python,Pandas,Dataframe,Duplicates,Mapping,我随身携带下表: Key Col ABC Dup1 ACA Dup1 ACA Dup2 ECB Dup3 ACD Dup2 我想将第3行中的第一行值指定给键ACA作为Dup1(第2行),并将ACD的值更改为Dup1作为ABC=ACA=ACD以下是所需的输出: Key Col ABC Dup1 ACA Dup1 ACA Dup1 ECB Dup3 ACD Dup1 我已经尽了最大努力解释了这个问题,但请随时询问进一步的问题。您需要两个映射来将重复项映射到

我随身携带下表:

Key Col  
ABC Dup1  
ACA Dup1  
ACA Dup2  
ECB Dup3  
ACD Dup2
我想将第3行中的第一行值指定给键ACA作为Dup1(第2行),并将ACD的值更改为Dup1作为ABC=ACA=ACD以下是所需的输出:

Key Col  
ABC Dup1  
ACA Dup1  
ACA Dup1  
ECB Dup3  
ACD Dup1

我已经尽了最大努力解释了这个问题,但请随时询问进一步的问题。

您需要两个映射来将重复项映射到键,并将键映射到重复项。使用
df.replace
替换值

m1 = dict(df.iloc[df.Col.drop_duplicates(keep='first').index].values[:, ::-1])
m2 = dict(df.iloc[df.Key.drop_duplicates(keep='first').index].values)
df.Col = df.Col.replace(m1).replace(m2)

df 
   Key   Col
0  ABC  Dup1
1  ACA  Dup1
2  ACA  Dup1
3  ECB  Dup3
4  ACD  Dup1

您需要两个映射来将重复项映射到键,并将键映射到重复项。使用
df.replace
替换值

m1 = dict(df.iloc[df.Col.drop_duplicates(keep='first').index].values[:, ::-1])
m2 = dict(df.iloc[df.Key.drop_duplicates(keep='first').index].values)
df.Col = df.Col.replace(m1).replace(m2)

df 
   Key   Col
0  ABC  Dup1
1  ACA  Dup1
2  ACA  Dup1
3  ECB  Dup3
4  ACD  Dup1

您能解释一下为什么
ABC=ACA=ACD
?因为第1行和第2行具有相同的值“Dup1”,所以它们的键ABC=ACA------1和类似地,第3行和第5行具有相同的值“Dup2”,所以第1行和第2行中的键ACA=ACD------2:ABC=ACA=ACD,因此所有3个键都具有相同的值,即Dup1。更新了我的答案。如果有效,请考虑接受标记。谢谢。您能解释一下为什么
ABC=ACA=ACD
?因为第1行和第2行具有相同的值“Dup1”,所以它们的键ABC=ACA------1,同样地,第3行和第5行具有相同的值“Dup2”,所以第1行和第2行的键ACA=ACD------2:ABC=ACA=ACD,因此所有3个键的值都相同,即Dup1。更新了我的答案。如果有效,请考虑接受标记。谢谢