python - 从熊猫数据框中删除重复的行:不区分大小写的比较
问题描述
我想根据两列中的值从数据框中删除重复的行:Column1
和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
(猫和蝙蝠的情况发生了变化)
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'
这种比较如何不区分大小写?
解决方案
我想到了。创建新的大写列,然后使用它们删除重复项。完成后,删除大写列。
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()
这给出了:
+---+---------+----------+---------+---------------+---------------+
| | Column1 | Column2 | Column3 | Column1_Upper | Column2_Upper |
+---+---------+----------+---------+---------------+---------------+
| 0 | 'Cat' | 'Bat' | 'xyz' | 'CAT' | 'BAT' |
| 1 | 'toy' | 'flower' | 'abc' | 'TOY' | 'FLOWER' |
| 2 | 'cat' | 'bat' | 'lmn' | 'CAT' | 'BAT' |
+---+---------+----------+---------+---------------+---------------+
最后,运行以下命令删除重复项和创建的列。
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' |
+-----------------------------+
推荐阅读
- javascript - Chrome 扩展:在频道中发布不和谐的 webhook 内容时获取
- python - Python 3 中的 While 循环和真/假条件
- pseudocode - 这个伪代码中的 MID 是什么意思?
- regex - 谷歌表格中的正则表达式 - 在斜杠之间提取部分 URL
- javascript - 我正在使用 S3 存储桶来托管我的网站,我需要将我的网站重定向到我的仪表板组件
- excel - 如何以增量方式复制和重命名包含数字的选项卡
- ios - 如何确保点击次数过多时图像不会消失?斯威夫特 4
- python - 如何从文本文件中提取单词以用作变量?
- php - 如何使用 preg_match 查找两个或三个特定单词的字符串模式
- java - Java 11 向 0.0.0.0 发送 http 请求延迟 5 秒