如果我具有如下数据帧,其中01和02、03和04、05和06是相同的引用:
id city
01 New York City
02 New York
03 Tokyo City
04 Tokyo
05 Shanghai City
06 Shanghai
07 Beijing City
08 Paris
09 Berlin
如何删除重复引用并获取以下数据框?谢谢。
id city
01 New York
02 Tokyo
03 Shanghai
04 Beijing City
05 Paris
06 Berlin
答案 0 :(得分:2)
用空字符串替换City部分,并通过保留第一行来应用组
df=pd.DataFrame({'id':[1,2,3,4],'city':['New York City','New York','Tokyo City','Tokyo']})
df看起来像这样
city id
0 New York City 1
1 New York 2
2 Tokyo City 3
3 Tokyo 4
应用替换和分组依据以获取每个分组中的第一行
df.city=df.city.str.replace('City','').str.strip()
df.groupby('city').first().sort_values('id')
输出:
city id
New York 1
Tokyo 3
或在列的子集上使用drop_duplicates。谢谢@JR ibkr
df.drop_duplicates(subset='city')
答案 1 :(得分:1)
现在使用drop_duplicates和keep参数,这在熊猫中要容易得多。
# dataset
df = pd.DataFrame({'id':[1,2,3,4],'city':['New York City','New York','Tokyo City','Tokyo']})
# replace values
df.city = df.city.str.replace('City','').str.strip()
# drop duplicate (answer of original question)
df.drop_duplicates(subset=['city'])
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html