从 pandas 数据框中删除重复的行:区分大小写的比较 [英] Remove duplicate rows from a pandas dataframe: Case Insenstive comparison
本文介绍了从 pandas 数据框中删除重复的行:区分大小写的比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想基于两列中的值从数据框中删除重复的行:Column1
和Column2
I want to remove duplicate rows from the dataframe based on values in two columns: Column1
and Column2
如果dataframe
是:
df = pd.DataFrame({'Column1': ["'cat'", "'toy'", "'cat'"],
'Column2': ["'bat'", "'flower'", "'bat'"],
'Column3': ["'xyz'", "'abc'", "'lmn'"]})
使用时:
result_df = df.drop_duplicates(subset=['Column1', 'Column2'], keep='first')
print(result_df)
我得到:
Column1 Column2 Column3
0 'cat' 'bat' 'xyz'
1 'toy' 'flower' 'abc'
但是对于dataframe
使用相同的代码(Cat和Bat的情况已更改)
But using same code for dataframe
(Cat and Bat cases changed)
df = pd.DataFrame({'Column1': ["'Cat'", "'toy'", "'cat'"],
'Column2': ["'Bat'", "'flower'", "'bat'"],
'Column3': ["'xyz'", "'abc'", "'lmn'"]})
我得到:
Column1 Column2 Column3
0 'Cat' 'Bat' 'xyz'
1 'toy' 'flower' 'abc'
2 'cat' 'bat' 'lmn'
预期输出:
Column1 Column2 Column3
0 'cat' 'bat' 'xyz'
1 'toy' 'flower' 'abc'
如何不区分大小写地进行比较?
How can this comparison be done case insensitively?
推荐答案
我知道了...创建一个新的大写列,并使用它们删除重复项,然后删除这些列.
I figured it out... Create a new uppercase columns and use them to remove duplicates, then drop those columns.
df = pd.DataFrame({'Column1': ["'Cat'", "'toy'", "'cat'"],
'Column2': ["'Bat'", "'flower'", "'bat'"],
'Column3': ["'xyz'", "'abc'", "'lmn'"]})
df['Column1_Upper'] = df['Column1'].astype(str).str.upper()
df['Column2_Upper'] = df['Column2'].astype(str).str.upper()
result_df = df.drop_duplicates(subset=['Column1_Upper', 'Column2_Upper'], keep='first')
result_df.drop(['Column1_Upper', 'Column2_Upper'], axis=1, inplace=True)
print(result_df)
这给出了:
Column1 Column2 Column3
0 'Cat' 'Bat' 'xyz'
1 'toy' 'flower' 'abc'
这篇关于从 pandas 数据框中删除重复的行:区分大小写的比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文