Ale*_*ini 3 python dataframe pandas
我有一个数据框,我想根据不同的条件删除重复项。
A B
0 1 1.0
1 1 1.0
2 2 2.0
3 2 2.0
4 3 3.0
5 4 4.0
6 5 5.0
7 - 5.1
8 - 5.1
9 - 5.3
Run Code Online (Sandbox Code Playgroud)
我想从A列中删除所有重复项,但带有“-”的行除外。在此之后,我想基于A列的B列值,使用“-”作为值从A列中删除重复项。给定输入数据框,应返回以下内容:
A B
0 1 1.0
2 2 2.0
4 3 3.0
5 4 4.0
6 5 5.0
7 - 5.1
9 - 5.3
Run Code Online (Sandbox Code Playgroud)
我有以下代码,但是对于大量数据而言效率不高,我该如何改善它。
def generate(df):
str_col = df[df["A"] == "-"]
df.drop(df[df["A"] == "-"].index, inplace=True)
df = df.drop_duplicates(subset="A")
str_col = b.drop_duplicates(subset="B")
bigdata = df.append(str_col, ignore_index=True)
return bigdata.sort_values("B")
Run Code Online (Sandbox Code Playgroud)
duplicated和eq:
df[~df.duplicated('A') # keep those not duplicates in A
| (df['A'].eq('-') # or those '-' in A
& ~df['B'].duplicated())] # which are not duplicates in B
Run Code Online (Sandbox Code Playgroud)
输出:
A B
0 1 1.0
2 2 2.0
4 3 3.0
5 4 4.0
6 5 5.0
7 - 5.1
9 - 5.3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41 次 |
| 最近记录: |