如何过滤某一列,删除重复的数据



我想将权重返回到直方图,但名称只出现一次。

df = pd.DataFrame({'Name': ['Bob', 'Simon', 'Bill', 'Mary', 'Mary', 'Bob'],
'Weight': [70, 72, 71, 67, 67, 70]})

此:

Bob    70
Simon  72
Bill   71
Mary   67 

使用drop_duplicates:

out = df.drop_duplicates(['Name', 'Weight'])
print(out)
# Output
Name  Weight
0    Bob      70
1  Simon      72
2   Bill      71
3   Mary      67

您需要groupby:

df.groupby('Name')['Weight'].mean()

如果您只想获取每个名称的第一个可用数据点:

df.groupby('Name')['Weight'].first()

我们可以使用groupby函数和聚合函数作为mean

数据看起来像这个

>>> df = pd.DataFrame({'Name': ['Bob', 'Simon', 'Bill', 'Mary', 'Mary', 'Bob'], 'Weight': [70, 72, 71, 67, 67, 70]})
>>> print(df)
Name  Weight
0    Bob      70
1  Simon      72
2   Bill      71
3   Mary      67
4   Mary      67
5    Bob      70
>>> df2 = df.groupby(['Name']).mean()
>>> print(df2)
Name  Weight
0   Bill      71
1    Bob      70
2   Mary      67
3  Simon      72

Name索引列转换为列并添加RangeIndex

>>> df2['Name'] = df2.index
>>> df2 = df2[['Name', 'Weight']]
>>> df2.set_index(pd.RangeIndex(start=0, stop=len(df2), step=1), inplace=True)
>>> print(df2)
Name  Weight
0   Bill      71
1    Bob      70
2   Mary      67
3  Simon      72

执行以下操作:

df = df.drop_duplicates(subset=['Name', 'Weight'])
print(df)

输出:

>>>  Name  Weight
0    Bob      70
1  Simon      72
2   Bill      71
3   Mary      67

最新更新