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