繁体   English   中英

用具有相同索引但顺序不同的另一列替换Pandas数据框中的一列

[英]Replace a column in Pandas dataframe with another that has same index but in a different order

我正在尝试将提取的列重新插入到pandas数据框中,并对其排序进行了更改。

很简单,我从pandas df中提取了一列:

col1 = df.col1

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

col1.sort()
#do stuff that changes the values of col1.

现在,col1的索引与整个df的索引相同,但是顺序不同。

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

我尝试了以下两种方法:

1)

df.col1 = col1

2)

df.insert(column_index_of_col1, "col1", col1)

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

ValueError: cannot reindex from a duplicate axis

任何帮助将不胜感激。 谢谢。

考虑以下DataFrame:

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是对应于原始DataFrame的第一行还是第二行。 您可以取反运算(例如,取平方根并匹配),但是我认为这是不必要的。 如果您从具有唯一元素的索引开始( df = df.reset_index() ),它将容易得多。 在这种情况下,

df['B'] = b

应该工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM