[英]Replace column of pandas multi-index DataFrame with another DataFrame
[英]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.