Python 将dataframe中的列替换为具有相同索引但顺序不同的列

Python 将dataframe中的列替换为具有相同索引但顺序不同的列,python,pandas,Python,Pandas,我试图将我提取的列重新插入到熊猫数据帧中,并通过排序更改了列的顺序 非常简单,我从一个文档中提取了一列: col1 = df.col1 此列包含整数,我使用.sort()方法将其从最小到最大排序。对数据做了一些操作 col1.sort() #do stuff that changes the values of col1. 现在col1的索引与总体df的索引相同,但顺序不同 我想知道如何将列插入到原始数据帧中(替换目前存在的col1) 我尝试了以下两种方法: (一) (二) 但这两种方法都给

我试图将我提取的列重新插入到熊猫数据帧中,并通过排序更改了列的顺序

非常简单,我从一个文档中提取了一列:

col1 = df.col1
此列包含整数,我使用.sort()方法将其从最小到最大排序。对数据做了一些操作

col1.sort()
#do stuff that changes the values of col1.
现在col1的索引与总体df的索引相同,但顺序不同

我想知道如何将列插入到原始数据帧中(替换目前存在的col1)

我尝试了以下两种方法:

(一)

(二)

但这两种方法都给了我以下错误:

ValueError: cannot reindex from a duplicate axis
任何帮助都将不胜感激。
谢谢。

请考虑以下数据帧:

df = pd.DataFrame({'A': [1, 2, 3], 'B': [6, 5, 4]}, index=[0, 0, 1])

df
Out: 
   A  B
0  1  6
0  2  5
1  3  4
将第二列指定给
b
,并对其进行排序,以正方形为例:

b = df['B']
b = b.sort_values()
b = b**2
现在
b
是:

b
Out: 
1    16
0    25
0    36
Name: B, dtype: int64
如果不知道您对列所做的确切操作,就无法知道25是对应于原始数据帧中的第一行还是第二行。你可以取运算的倒数(以平方根和匹配为例),但我认为那是不必要的。如果您从一个具有唯一元素的索引开始(
df=df.reset_index()
),它会容易得多。那么,

df['B'] = b

应该可以正常工作。

如果索引中有重复项,我认为没有任何方法可以返回到col1的原始顺序(有吗?)
b
Out: 
1    16
0    25
0    36
Name: B, dtype: int64
df['B'] = b