Fra*_*cía 5 python filtering dataframe pandas
我的列中包含不同值的数据框x.我想删除在列中只出现一次的值.
所以这:
x
1 10
2 30
3 30
4 40
5 40
6 50
Run Code Online (Sandbox Code Playgroud)
应该变成这样:
x
2 30
3 30
4 40
5 40
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法做到这一点.
Jim*_*ard 13
In [1]: import pandas as pd
In [2]: df = pd.DataFrame([10, 30, 30, 40, 40, 50], columns=['x'])
In [3]: df = df[df.groupby('x').x.transform(len) > 1]
In [4]: df
Out[4]:
x
1 30
2 30
3 40
4 40
Run Code Online (Sandbox Code Playgroud)
In [9]:
df = pd.DataFrame([10, 30, 30, 40, 40, 50], columns=['x'])
df = df.groupby('x').filter(lambda x: len(x) > 1)
df
Out[9]:
x
1 30
2 30
3 40
4 40
Run Code Online (Sandbox Code Playgroud)
一种更明确的方法来保留所有重复的值怎么样:
df = df.loc[df.duplicated(subset='x', keep=False), :]
Run Code Online (Sandbox Code Playgroud)
相反,仅保留唯一值:
df = df.loc[~df.duplicated(subset='x', keep=False), :]
Run Code Online (Sandbox Code Playgroud)
和这个:
df = df.loc[~df.duplicated(subset='x'), :]
Run Code Online (Sandbox Code Playgroud)
相当于:
df = df.drop_duplicates(subset='x')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4075 次 |
| 最近记录: |