Dev*_*022 0 python if-statement subset dataframe pandas
假设我有这个数据框,我想根据以下条件创建它的子集。
df=pd.DataFrame({'file':[1205,2897,1205,1205,4312,1322,1242,52,2897,111],
'department':[finance,finance,IT,marketing,marketing,IT,finance,IT,marketing,IT],
'status':[1,1,1,1,1,1,1,1,1,1],
})
Run Code Online (Sandbox Code Playgroud)
file department status
0 1205 finance 1
1 2897 finance 1
2 1205 IT 1
3 1205 marketing 1
4 4312 marketing 1
5 1322 IT 1
6 1242 finance 1
7 52 IT 1
8 2897 marketing 1
9 111 IT 1
Run Code Online (Sandbox Code Playgroud)
预期结果:
file department status
0 1205 IT 1
1 2897 marketing 1
2 4312 marketing 1
3 1322 IT 1
4 1242 finance 1
5 52 IT 1
6 111 IT 1
Run Code Online (Sandbox Code Playgroud)
用于CategoricalDtype创建有序集合,例如'finance' < 'marketing' < 'IT':
cat = pd.CategoricalDtype(['finance', 'marketing', 'IT'], ordered=True)
out = (df.astype({'department': cat}).sort_values('department')
.drop_duplicates('file', keep='last').sort_index())
print(out)
# Output
file department status
2 1205 IT 1
4 4312 marketing 1
5 1322 IT 1
6 1242 finance 1
7 52 IT 1
8 2897 marketing 1
9 111 IT 1
Run Code Online (Sandbox Code Playgroud)