gpt4 book ai didi

python - 在保留原始数据的条件下从 Pandas dataFrame 中删除重复项

转载 作者:太空狗 更新时间:2023-10-30 01:42:41 26 4
gpt4 key购买 nike

假设我有以下 DataFrame:

 A | B
1 | Ms
1 | PhD
2 | Ms
2 | Bs

我想删除关于 A 列的重复行,我想保留 B 列中值为“PhD”的行作为原始行,如果我没有找到“PhD”,我想保留B 列中带有“Bs”的行。

我正在尝试使用

 df.drop_duplicates('A') 

有条件

最佳答案

考虑使用分类。他们很好的是按非字母顺序(除其他外)对文本进行分组/排序。

import pandas as pd  
#create a pandas dataframe for testing with two columns A integer and B string
df = pd.DataFrame([(1, 'Ms'), (1, 'PhD'),
(2, 'Ms'), (2, 'Bs'),
(3, 'PhD'), (3, 'Bs'),
(4, 'Ms'), (4, 'PhD'), (4, 'Bs')],
columns=['A', 'B'])
print("Original data")
print(df)

# force the column's string column B to type 'category'
df['B'] = df['B'].astype('category')
# define the valid categories:
df['B'] = df['B'].cat.set_categories(['PhD', 'Bs', 'Ms'], ordered=True)
#pandas dataframe sort_values to inflicts order on your categories
df.sort_values(['A', 'B'], inplace=True, ascending=True)
print("Now sorted by custom categories (PhD > Bs > Ms)")
print(df)
# dropping duplicates keeps first
df_unique = df.drop_duplicates('A')
print("Keep the highest value category given duplicate integer group")
print(df_unique)

打印:

Original data
A B
0 1 Ms
1 1 PhD
2 2 Ms
3 2 Bs
4 3 PhD
5 3 Bs
6 4 Ms
7 4 PhD
8 4 Bs
Now sorted by custom categories (PhD > Bs > Ms)
A B
1 1 PhD
0 1 Ms
3 2 Bs
2 2 Ms
4 3 PhD
5 3 Bs
7 4 PhD
8 4 Bs
6 4 Ms
Keep the highest value category given duplicate integer group
A B
1 1 PhD
3 2 Bs
4 3 PhD
7 4 PhD

关于python - 在保留原始数据的条件下从 Pandas dataFrame 中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33042777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com