我想更改 Dataframe 中特定行的索引,而其他地方也存在具有相同索引的另一行。df.rename(index={'old_value':'new_value'})
没有帮助,因为它替换了这两个示例。
import numpy as np
import pandas as pd
np.random.seed(42) # Setting seed for reproducibility
df = pd.DataFrame(data=np.random.rand(6,3)) # Creating the dataframe
df.index = ['Adam','Bob','Charlie','David','Adam','Finny'] # Setting a custom index containing a duplicate for "Adam"
print(df)
Original dataframe:
0 1 2
Adam 0.374540 0.950714 0.731994
Bob 0.598658 0.156019 0.155995
Charlie 0.058084 0.866176 0.601115
David 0.708073 0.020584 0.969910
Adam 0.832443 0.212339 0.181825
Finny 0.183405 0.304242 0.524756
我需要将第二个示例"Adam"更改为"Elise"。
我尝试过使用df.rename(index={'Adam': 'Elise'})
的常规方法。
然而,这将用"Elise"替换"Adam"的两个示例,这不是我们想要的。
我想出的一个粗略的解决方案如下:
一个二个一个一个
现在只有第二个示例"Adam"已正确更改为"Elise"。
- 有没有什么方法可以更直接地完成这一点,而不诉诸于这种粗糙的操作?也许可以使用panda内置的函数/方法?**
1条答案
按热度按时间b5buobof1#
您可以使用
pd.Index.where
和pd.Index.duplicated
请注意,使用此方法时,任何和所有重复项都将被替换为"Elise"(可能导致重复Elise),因此如果您想同时替换不同的重复项,此方法并不合适。